// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.Collections.Generic;
using Xunit;

namespace System.Numerics.Tests
{
    public class BigIntegerSubtractTests
    {
        public static IEnumerable<object[]> UnaryMinus_TestData()
        {
            BigInteger largePositiveBigInt = BigInteger.Parse("123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123");
            BigInteger largeNegativeBigInt = BigInteger.Parse("-123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123");

            yield return new object[] { largePositiveBigInt, largeNegativeBigInt };
            yield return new object[] { largeNegativeBigInt, largePositiveBigInt };
            yield return new object[] { new BigInteger(123), new BigInteger(-123) };
            yield return new object[] { new BigInteger(-123), new BigInteger(123) };
            yield return new object[] { new BigInteger(0), new BigInteger(0) };
            yield return new object[] { new BigInteger(-1), new BigInteger(1) };
            yield return new object[] { new BigInteger(1), new BigInteger(-1) };
            yield return new object[] { new BigInteger(int.MinValue), new BigInteger((uint)int.MaxValue + 1) };
            yield return new object[] { new BigInteger(int.MaxValue), new BigInteger(-int.MaxValue) };
            yield return new object[] { new BigInteger(long.MaxValue), new BigInteger(-long.MaxValue) };
            yield return new object[] { new BigInteger(long.MinValue), new BigInteger((ulong)long.MaxValue + 1) };
        }

        [Theory]
        [MemberData(nameof(UnaryMinus_TestData))]
        public static void UnaryMinus(BigInteger bigInteger, BigInteger expected)
        {
            Assert.Equal(expected, -bigInteger);
            Assert.Equal(expected, BigInteger.Negate(bigInteger));
        }

        public static IEnumerable<object[]> BinaryMinus_TestData()
        {
            yield return new object[] { new BigInteger(int.MinValue), new BigInteger(-1), new BigInteger(int.MinValue + 1) };
            yield return new object[] { new BigInteger(int.MinValue), new BigInteger(1), new BigInteger((long)int.MinValue - 1) };
            yield return new object[] { new BigInteger(int.MaxValue), new BigInteger(-1), new BigInteger((long)int.MaxValue + 1) };
            yield return new object[] { new BigInteger(int.MaxValue), new BigInteger(1), new BigInteger(int.MaxValue - 1) };

            yield return new object[] { new BigInteger(long.MinValue), new BigInteger(-1), new BigInteger(long.MinValue + 1) };
            yield return new object[] { new BigInteger(long.MinValue), new BigInteger(1), new BigInteger(new byte[] { 255, 255, 255, 255, 255, 255, 255, 127, 255 }) };
            yield return new object[] { new BigInteger(long.MaxValue), new BigInteger(-1), new BigInteger((ulong)long.MaxValue + 1) };
            yield return new object[] { new BigInteger(long.MaxValue), new BigInteger(1), new BigInteger(long.MaxValue - 1) };

            const string LargePositiveBigIntString1 = "123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123";
            BigInteger largePositiveBigInt1 = BigInteger.Parse(LargePositiveBigIntString1);
            BigInteger largeNegativeBigInt1 = -largePositiveBigInt1;

            const string LargePositiveBigIntString2 = "234234234234234234234234234234234234234234234234234234234234234234234234";
            BigInteger largePositiveBigInt2 = BigInteger.Parse(LargePositiveBigIntString2);
            BigInteger largeNegativeBigInt2 = -largePositiveBigInt2;

            // Big - Big
            const string LargePositiveBigIntMinusLargePositiveBigIntString = "123123123123123123123122888888888888888888888888888888888888888888888888888888888888888888888889";
            const string LargePositiveBigIntMinusLargeNegativeBigIntString = "123123123123123123123123357357357357357357357357357357357357357357357357357357357357357357357357";
            yield return new object[] { largePositiveBigInt1, largePositiveBigInt2, BigInteger.Parse(LargePositiveBigIntMinusLargePositiveBigIntString) };
            yield return new object[] { largePositiveBigInt1, largeNegativeBigInt2, BigInteger.Parse(LargePositiveBigIntMinusLargeNegativeBigIntString) };
            yield return new object[] { largeNegativeBigInt1, largePositiveBigInt2, BigInteger.Parse("-" + LargePositiveBigIntMinusLargeNegativeBigIntString) };
            yield return new object[] { largeNegativeBigInt1, largeNegativeBigInt2, BigInteger.Parse("-" + LargePositiveBigIntMinusLargePositiveBigIntString) };

            // Big - small
            string LargePositiveBigIntMinusSmallPositiveBigIntString = "123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123000";
            string LargePositiveBigIntMinusSmallNegativeBigIntString = "123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123246";
            yield return new object[] { largePositiveBigInt1, new BigInteger(123), BigInteger.Parse(LargePositiveBigIntMinusSmallPositiveBigIntString) };
            yield return new object[] { largePositiveBigInt1, new BigInteger(-123), BigInteger.Parse(LargePositiveBigIntMinusSmallNegativeBigIntString) };
            yield return new object[] { largeNegativeBigInt1, new BigInteger(123), BigInteger.Parse("-" + LargePositiveBigIntMinusSmallNegativeBigIntString) };
            yield return new object[] { largeNegativeBigInt1, new BigInteger(-123), BigInteger.Parse("-" + LargePositiveBigIntMinusSmallPositiveBigIntString) };

            // Very large - very large
            yield return new object[]
            {
                new BigInteger(new byte[] { 86, 40, 240, 54, 176, 173, 86, 246, 44, 114, 227, 38, 121, 29, 118, 9, 250, 39, 166, 53, 89, 182, 206, 34, 18, 186, 194, 31, 31, 100, 147, 122, 139, 172, 194, 117, 20, 197, 208, 5, 106, 23, 124, 19, 116, 173, 97, 202, 241, 114, 49, 31, 25, 186, 193, 159, 89, 206, 35, 246, 235, 55, 214, 200, 223, 105, 154, 204, 91, 0, 245, 53, 86, 160, 202, 66, 58, 187, 173, 101, 89, 247, 45, 173, 50, 116, 96, 209, 234, 34, 28, 70, 161, 218, 26, 51, 64, 180, 52, 11, 18, 148, 111, 240, 124, 252, 200, 121, 239, 127, 100, 158, 32, 190, 156, 243, 9, 41, 149, 106, 8, 201, 225, 57, 228, 175, 147, 123, 134, 151, 1, 133, 134, 161, 83, 197, 136, 60, 48, 54, 171, 231, 225, 107, 189, 125, 37, 227, 62, 38, 41, 23, 30, 201, 3, 72, 178, 53, 12, 205, 104, 76, 242, 88, 126, 223, 23, 126, 107, 214, 106, 204, 248, 95, 190, 32, 231, 118, 123, 102, 137, 175, 61, 95, 110, 233, 102, 189, 158, 10, 19, 82, 48, 99, 205, 95, 244, 137, 237, 222, 102, 166, 120, 104, 188, 92, 31, 191, 10, 226, 96, 59, 186, 165, 67, 185, 15, 146, 233, 148, 120, 90, 224, 96, 194, 23, 156, 148, 146, 95, 43, 94, 137, 156, 0, 227, 54, 213, 163, 17, 202, 167, 178, 187, 169, 216, 151, 138, 31, 20, 79, 98, 159, 89, 102, 11, 197, 24, 165, 164, 192, 138, 44, 171, 182, 2, 178, 30, 165, 96, 130, 58, 239, 216, 201, 208, 168, 36, 183, 234, 127, 17, 116, 126, 15, 201, 190, 47, 54, 244, 29, 30, 47, 255, 81, 64, 122, 6, 4, 166, 37, 121, 229, 191, 145, 21, 114, 199, 143, 149, 99, 160, 96, 186, 36, 174, 21, 174, 155, 237, 68, 130, 232, 176, 66, 99, 10, 240, 134, 137, 85, 161, 31, 17, 196, 6, 44, 180, 236, 250, 87, 247, 160, 160, 144, 124, 190, 116, 218, 162, 42, 204, 107, 23, 98, 163, 145, 52, 125, 46, 11, 130, 64, 6, 64, 194, 129, 79, 245, 30, 130, 96, 194, 161, 149, 76, 226, 71, 32, 197, 165, 149, 21, 228, 94, 137, 54, 7, 174, 33, 116, 247, 55, 189, 238, 212, 182, 153, 95, 206, 251, 111, 126, 188, 31, 201, 9, 202, 129, 21, 192, 73, 20, 183, 136, 117, 108, 92, 168, 183, 140, 121, 160, 212, 169, 139, 41, 5, 178, 193, 150, 73, 232, 81, 202, 54, 22, 88, 196, 149, 128, 108, 134, 152, 97, 43, 227, 128, 52, 121, 104, 89, 241, 168, 66, 130, 206, 170, 19, 148, 160, 4, 23, 192, 126, 119, 97, 194, 237, 82, 95, 19, 152, 18, 55, 32, 243, 7, 115, 126, 167, 169, 208, 57, 89, 60, 87, 63, 15, 72, 104, 107, 69, 47, 244, 123, 84, 197, 25, 233, 201, 32, 146, 226, 25, 84, 193, 222, 113, 34, 143, 198, 55, 149, 236, 246, 52, 221, 103, 65, 31, 34, 179, 165, 234, 243, 206, 104, 29, 187, 203, 45, 237, 137, 180, 135, 22, 238, 31, 4, 123, 121, 205, 237, 184, 161, 52, 175, 67, 254, 71, 118, 93, 216, 201, 167, 109, 237, 247, 38, 133, 89, 192, 182, 86, 97, 216, 173, 225, 101, 224, 69, 190, 98, 198, 166, 84, 198, 236, 72, 190, 30, 36, 31, 115, 84, 207, 21, 192, 13, 25, 40, 246, 248, 126, 33, 184, 23, 150, 87, 201, 134, 206, 222, 29, 1, 184, 250, 17, 34, 82, 167, 1, 174, 104, 103, 52, 160, 66, 2, 145, 194, 237, 211, 75, 184, 79, 197, 228, 164, 238, 61, 48, 149, 127, 56, 79, 70, 2, 113, 155, 213, 4, 157, 186, 114, 39, 72, 144, 23, 236, 23, 212, 148, 197, 7, 153, 250, 146, 101, 178, 243, 22, 108, 52, 20, 119, 108, 47, 48, 23, 238, 158, 208, 102, 188, 189, 79, 25, 217, 145, 6, 52, 205, 184, 214, 105, 155, 207, 120, 159, 84, 180, 157, 191, 168, 190, 152, 105, 165, 251, 186, 25, 96, 255, 254, 121, 3, 45, 8, 73, 73, 225, 185, 212, 171, 190, 73, 180, 94, 171, 219, 156, 182, 144, 194, 57, 1, 17, 189, 253, 37, 230, 115, 221, 214, 237, 212, 205, 185, 92, 102, 109, 198, 47, 85, 115, 250, 201, 19, 234, 117, 227, 11, 250, 32, 30, 98, 207, 60, 196, 120, 241, 112, 11, 35, 99, 109, 219, 253, 189, 233, 124, 250, 1, 69, 109, 213, 135, 59, 79, 62, 55, 253, 210, 136, 65, 218, 120, 189, 183, 139, 5, 144, 244, 227, 116, 253, 187, 11, 241, 5, 31, 203, 85, 0, 249, 233, 9, 181, 178, 72, 218, 147, 237, 133, 64, 244, 157, 130, 226, 136, 245, 30, 70, 50, 228, 235, 5, 29, 209, 111, 25, 124, 74, 73, 31, 108, 167, 210, 143, 88, 209, 195, 10, 110, 176, 113, 163, 111, 163, 127, 95, 57, 41, 104, 16, 0, 133, 35, 28, 13, 227, 235, 228, 67, 46, 94, 73, 163, 101, 211, 76, 203, 242, 137, 183, 49, 20, 215, 129, 115, 71, 150, 122, 81, 16, 224, 83, 225, 57, 31, 231, 132, 182, 129, 116, 229, 222, 199, 63, 81, 39, 255, 9, 207, 51, 148, 70, 159, 176, 222, 235, 174, 161, 168, 197, 77, 113, 147, 51, 78, 11, 104, 106, 70, 236, 199, 21, 113, 21, 210, 82, 77, 151, 48, 76, 72, 140, 171, 29, 123, 154, 180, 48, 90, 51, 57, 227, 13, 187, 39, 116, 75, 148, 241, 70, 190, 149, 195, 226, 107, 127, 213, 137, 222, 139, 158, 23, 113, 92, 125, 192, 198, 117, 183, 180, 87, 56, 15, 18, 178, 228, 7, 181, 238, 94, 7, 185, 165, 233, 141 }),
                new BigInteger(new byte[] { 201, 200, 177, 252, 196, 42, 81, 206, 148, 34, 113, 177, 62, 102, 173, 213, 220, 61, 239, 134, 134, 176, 47, 135, 119, 32, 155, 128, 132, 229, 113, 135, 207, 203, 246, 253, 195, 187, 239, 44, 230, 64, 125, 144, 114, 86, 118, 135, 176, 49, 220, 103, 249, 6, 44, 25, 152, 42, 132, 164, 142, 209, 74, 175, 176, 233, 226, 115, 112, 176, 18, 33, 78, 194, 160, 69, 50, 159, 20, 33, 169, 20, 207, 82, 8, 9, 142, 200, 159, 221, 101, 152, 55, 74, 158, 20, 245, 206, 223, 136, 115, 3, 22, 0, 31, 187, 25, 55, 101, 230, 230, 249, 22, 98, 251, 121, 1, 247, 167, 167, 91, 25, 211, 146, 75, 121, 233, 3, 36, 139, 80, 100, 191, 139, 174, 165, 253, 207, 51, 76, 240, 86, 99, 185, 246, 107, 130, 212, 79, 36, 19, 254, 39, 56, 45, 90, 47, 131, 180, 165, 209, 21, 19, 217, 149, 130, 57, 139, 180, 85, 123, 49, 195, 90, 182, 5, 182, 26, 155, 223, 247, 21, 180, 255, 120, 81, 61, 134, 94, 83, 118, 122, 26, 142, 122, 218, 67, 137, 35, 116, 49, 247, 32, 250, 168, 225, 58, 204, 130, 39, 163, 20, 232, 213, 174, 188, 97, 19, 97, 67, 68, 179, 44, 96, 223, 1, 22, 53, 223, 219, 193, 44, 247, 38, 173, 0, 244, 186, 87, 151, 23, 113, 4, 54, 175, 97, 146, 69, 223, 189, 121, 48, 40, 223, 48, 126, 202, 192, 27, 166, 202, 4, 236, 166, 102, 118, 28, 193, 39, 174, 200, 167, 188, 202, 44, 211, 174, 246, 176, 125, 111, 209, 85, 34, 98, 145, 4, 24, 246, 46, 54, 52, 158, 176, 204, 19, 132, 94, 208, 57, 68, 208, 29, 49, 245, 210, 116, 94, 178, 92, 208, 211, 15, 157, 55, 249, 174, 202, 67, 212, 114, 4, 202, 249, 120, 148, 8, 11, 253, 25, 79, 79, 38, 119, 57, 158, 179, 36, 44, 144, 29, 166, 102, 153, 93, 98, 36, 1, 121, 211, 100, 186, 26, 251, 198, 64, 6, 36, 185, 97, 201, 104, 96, 153, 13, 128, 173, 152, 100, 152, 69, 138, 157, 179, 183, 203, 157, 48, 155, 21, 111, 7, 146, 42, 180, 149, 52, 42, 176, 249, 152, 143, 106, 203, 198, 180, 70, 204, 140, 221, 181, 140, 156, 225, 141, 218, 28, 103, 68, 251, 162, 214, 136, 164, 241, 194, 214, 53, 228, 120, 75, 130, 231, 107, 0, 181, 31, 210, 236, 2, 133, 209, 163, 190, 95, 227, 106, 177, 156, 218, 120, 205, 230, 181, 86, 194 }),
                new BigInteger(new byte[] { 141, 95, 62, 58, 235, 130, 5, 40, 152, 79, 114, 117, 58, 183, 200, 51, 29, 234, 182, 174, 210, 5, 159, 155, 154, 153, 39, 159, 154, 126, 33, 243, 187, 224, 203, 119, 80, 9, 225, 216, 131, 214, 254, 130, 1, 87, 235, 66, 65, 65, 85, 183, 31, 179, 149, 134, 193, 163, 159, 81, 93, 102, 139, 25, 47, 128, 183, 88, 235, 79, 226, 20, 8, 222, 41, 253, 7, 28, 153, 68, 176, 226, 94, 90, 42, 107, 210, 8, 75, 69, 182, 173, 105, 144, 124, 30, 75, 229, 84, 130, 158, 144, 89, 240, 93, 65, 175, 66, 138, 153, 125, 164, 9, 92, 161, 121, 8, 50, 237, 194, 172, 175, 14, 167, 152, 54, 170, 119, 98, 12, 177, 32, 199, 21, 165, 31, 139, 108, 252, 233, 186, 144, 126, 178, 198, 17, 163, 14, 239, 1, 22, 25, 246, 144, 214, 237, 130, 178, 87, 39, 151, 54, 223, 127, 232, 92, 222, 242, 182, 128, 239, 154, 53, 5, 8, 27, 49, 92, 224, 134, 145, 153, 137, 95, 245, 151, 41, 55, 64, 183, 156, 215, 21, 213, 82, 133, 176, 0, 202, 106, 53, 175, 87, 110, 19, 123, 228, 242, 135, 186, 189, 38, 210, 207, 148, 252, 173, 126, 136, 81, 52, 167, 179, 0, 227, 21, 134, 95, 179, 131, 105, 49, 146, 117, 83, 226, 66, 26, 76, 122, 178, 54, 174, 133, 250, 118, 5, 69, 64, 86, 213, 49, 119, 122, 53, 141, 250, 87, 137, 254, 245, 133, 64, 4, 80, 140, 149, 93, 125, 178, 185, 146, 50, 14, 157, 253, 249, 45, 6, 109, 16, 64, 30, 92, 173, 55, 186, 23, 64, 197, 231, 233, 144, 78, 133, 44, 246, 167, 51, 108, 225, 168, 199, 142, 156, 66, 253, 104, 221, 56, 147, 204, 80, 29, 237, 180, 102, 227, 87, 25, 210, 125, 30, 183, 201, 206, 1, 229, 137, 111, 6, 82, 249, 153, 138, 104, 120, 143, 192, 106, 58, 81, 58, 7, 51, 26, 154, 115, 97, 207, 197, 17, 81, 28, 155, 98, 139, 16, 196, 204, 65, 25, 224, 108, 50, 66, 212, 182, 144, 134, 60, 214, 36, 238, 221, 128, 68, 23, 133, 175, 54, 142, 131, 185, 170, 243, 1, 221, 253, 39, 219, 103, 205, 241, 39, 32, 112, 205, 210, 240, 69, 227, 225, 218, 145, 238, 236, 98, 61, 26, 29, 115, 139, 18, 151, 178, 149, 38, 196, 62, 65, 247, 184, 104, 169, 214, 9, 51, 197, 190, 17, 120, 68, 147, 106, 83, 171, 166, 39, 187, 7, 159, 159, 226, 10, 105, 227, 128, 52, 121, 104, 89, 241, 168, 66, 130, 206, 170, 19, 148, 160, 4, 23, 192, 126, 119, 97, 194, 237, 82, 95, 19, 152, 18, 55, 32, 243, 7, 115, 126, 167, 169, 208, 57, 89, 60, 87, 63, 15, 72, 104, 107, 69, 47, 244, 123, 84, 197, 25, 233, 201, 32, 146, 226, 25, 84, 193, 222, 113, 34, 143, 198, 55, 149, 236, 246, 52, 221, 103, 65, 31, 34, 179, 165, 234, 243, 206, 104, 29, 187, 203, 45, 237, 137, 180, 135, 22, 238, 31, 4, 123, 121, 205, 237, 184, 161, 52, 175, 67, 254, 71, 118, 93, 216, 201, 167, 109, 237, 247, 38, 133, 89, 192, 182, 86, 97, 216, 173, 225, 101, 224, 69, 190, 98, 198, 166, 84, 198, 236, 72, 190, 30, 36, 31, 115, 84, 207, 21, 192, 13, 25, 40, 246, 248, 126, 33, 184, 23, 150, 87, 201, 134, 206, 222, 29, 1, 184, 250, 17, 34, 82, 167, 1, 174, 104, 103, 52, 160, 66, 2, 145, 194, 237, 211, 75, 184, 79, 197, 228, 164, 238, 61, 48, 149, 127, 56, 79, 70, 2, 113, 155, 213, 4, 157, 186, 114, 39, 72, 144, 23, 236, 23, 212, 148, 197, 7, 153, 250, 146, 101, 178, 243, 22, 108, 52, 20, 119, 108, 47, 48, 23, 238, 158, 208, 102, 188, 189, 79, 25, 217, 145, 6, 52, 205, 184, 214, 105, 155, 207, 120, 159, 84, 180, 157, 191, 168, 190, 152, 105, 165, 251, 186, 25, 96, 255, 254, 121, 3, 45, 8, 73, 73, 225, 185, 212, 171, 190, 73, 180, 94, 171, 219, 156, 182, 144, 194, 57, 1, 17, 189, 253, 37, 230, 115, 221, 214, 237, 212, 205, 185, 92, 102, 109, 198, 47, 85, 115, 250, 201, 19, 234, 117, 227, 11, 250, 32, 30, 98, 207, 60, 196, 120, 241, 112, 11, 35, 99, 109, 219, 253, 189, 233, 124, 250, 1, 69, 109, 213, 135, 59, 79, 62, 55, 253, 210, 136, 65, 218, 120, 189, 183, 139, 5, 144, 244, 227, 116, 253, 187, 11, 241, 5, 31, 203, 85, 0, 249, 233, 9, 181, 178, 72, 218, 147, 237, 133, 64, 244, 157, 130, 226, 136, 245, 30, 70, 50, 228, 235, 5, 29, 209, 111, 25, 124, 74, 73, 31, 108, 167, 210, 143, 88, 209, 195, 10, 110, 176, 113, 163, 111, 163, 127, 95, 57, 41, 104, 16, 0, 133, 35, 28, 13, 227, 235, 228, 67, 46, 94, 73, 163, 101, 211, 76, 203, 242, 137, 183, 49, 20, 215, 129, 115, 71, 150, 122, 81, 16, 224, 83, 225, 57, 31, 231, 132, 182, 129, 116, 229, 222, 199, 63, 81, 39, 255, 9, 207, 51, 148, 70, 159, 176, 222, 235, 174, 161, 168, 197, 77, 113, 147, 51, 78, 11, 104, 106, 70, 236, 199, 21, 113, 21, 210, 82, 77, 151, 48, 76, 72, 140, 171, 29, 123, 154, 180, 48, 90, 51, 57, 227, 13, 187, 39, 116, 75, 148, 241, 70, 190, 149, 195, 226, 107, 127, 213, 137, 222, 139, 158, 23, 113, 92, 125, 192, 198, 117, 183, 180, 87, 56, 15, 18, 178, 228, 7, 181, 238, 94, 7, 185, 165, 233, 141 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 198, 217, 4, 222, 16, 231, 19, 145, 51, 164, 49, 225, 215, 187, 74, 123, 65, 118, 208, 50, 202, 68, 14, 87, 37, 153, 10, 0, 126, 155, 50, 20, 61, 175, 88, 248, 231, 35, 116, 233, 144, 45, 44, 63, 57, 207, 196, 31, 46, 81, 164, 63, 133, 143, 60, 130, 203, 173, 185, 119, 221, 19, 18, 152, 113, 29, 163, 40, 98, 81, 147, 30, 1, 231, 162, 157, 23, 207, 30, 85, 212, 235, 209, 45, 246, 243, 142, 174, 115, 213, 45, 58, 105, 253, 12, 124, 26, 148, 205, 28, 44, 155, 188, 220, 190, 134, 61, 158, 237, 158, 106, 252, 143, 100, 162, 241, 65, 229, 161, 126, 142, 244, 181, 141, 36, 89, 180, 3, 218, 38, 130, 131, 1, 1, 40, 56, 47, 245, 110, 111, 181, 239, 192, 212, 106, 48, 171, 5, 90, 26, 58, 53, 242, 79, 141, 55, 230, 47, 183, 101, 210, 58, 196, 199, 27, 231, 250, 141, 60, 106, 194, 76, 118, 49, 200, 159, 52, 225, 34, 243, 174, 174, 168, 191, 235, 77, 145, 178, 116, 240, 82, 255, 62, 9, 157, 123, 42, 248, 184, 131, 54, 29, 201, 240, 88, 237, 190, 192, 134, 238, 3, 4, 12, 195, 182, 35, 145, 5, 219, 206, 86, 72, 24, 75, 23, 194, 14, 108, 147, 77, 116, 59, 40, 158, 189, 144, 229, 183, 103, 253, 142, 208, 43, 134, 237, 77, 243, 122, 82, 122, 234, 37, 28, 234, 45, 238, 4, 125, 217, 149, 223, 82, 44, 57, 122, 199, 220, 109, 6, 38, 61, 217, 157, 221, 63, 134, 28, 146, 94, 202, 207, 147, 25, 25, 99, 78, 30, 62, 113, 207, 139, 104, 222, 209, 29, 60, 163, 242, 12, 37, 113, 133, 115, 44, 61, 16, 135, 62, 170, 167, 210, 114, 30, 15, 197, 76, 56, 19, 214, 43, 169, 158, 252, 55, 154, 213, 250, 204, 192, 3, 226, 41, 134, 57, 88, 74, 31, 237, 220, 82, 198, 223, 147, 202, 252, 25, 73, 207, 12, 209, 3, 143, 28, 224, 124, 211, 136, 60, 145, 103, 22, 187, 126, 166, 196, 168, 235, 229, 182, 123, 44, 74, 55, 132, 101, 201, 10, 49, 58, 129, 140, 42, 192, 238, 0, 82, 12, 166, 189, 133, 193, 227, 91, 116, 59, 10, 96, 237, 5, 84, 45, 99, 25, 144, 165, 184, 88, 152, 122, 178, 200, 87, 1, 16, 219, 235, 251, 144, 166, 113, 156, 69, 40, 49, 185, 72, 239, 194, 72, 90, 104, 29, 43, 230, 84, 40, 17, 47, 72, 71, 250, 116, 43, 10, 188, 106, 225, 75, 153, 80, 14, 207, 70, 148, 184, 231, 59, 232, 215, 93, 201, 150, 80, 31, 74, 171, 43, 27, 188, 178, 217, 204, 72, 95, 119, 40, 26, 30, 116, 79, 102, 164, 41, 248, 76, 152, 214, 151, 46, 108, 236, 41, 88, 234, 125, 100, 35, 11, 191, 16, 63, 197, 142, 230, 118, 65, 135, 231, 29, 143, 204, 29, 115, 135, 246, 37, 108, 88, 211, 177, 212, 147, 237, 79, 198, 176, 116, 93, 225, 19, 4, 15, 94, 100, 16, 161, 21, 66, 129, 10, 17, 239, 122, 158, 160, 207, 182, 208, 244, 88, 247, 203, 55, 14, 59, 171, 216, 63, 32, 198, 205, 41, 5, 10, 139, 188, 190, 15, 119, 85, 16, 42, 214, 201, 159, 229, 25, 79, 175, 246, 249, 164, 105, 137, 27, 56, 216, 80, 40, 100, 200, 214, 34, 187, 61, 232, 234, 112, 18, 227, 16, 167, 88, 159, 72, 205, 245, 110, 110, 86, 146, 137, 143, 41, 204, 41, 192, 123, 238, 83, 228, 110, 230, 18, 140, 58, 7, 26, 140, 183, 250, 168, 60, 203, 229, 82, 75, 201, 65, 78, 66, 105, 225, 209, 210, 63, 70, 248, 238, 19, 39, 110, 129, 190, 254, 162, 192, 70, 18, 13, 197, 218, 226, 182, 92, 233, 76, 195, 68, 122, 221, 246, 58, 160, 17, 123, 140, 21, 64, 77, 243, 15, 43, 120, 143, 139, 39, 125, 205, 67, 146, 5, 182, 51, 137, 103, 135, 43, 117, 233, 242, 130, 179, 116, 54, 49, 52, 225, 173, 131, 21, 170, 5, 197, 26, 181, 174, 106, 38, 208, 194, 206, 246, 1, 231, 216, 63, 6, 23, 169, 243, 97, 159, 87, 90, 113, 91, 183 }),
                new BigInteger(new byte[] { 94, 87, 69, 208, 73, 45, 231, 255, 241, 25, 211, 184, 28, 4, 165, 39, 36, 139, 178, 140, 93, 241, 45, 202, 4, 144, 180, 11, 174, 107, 168, 90, 247, 40, 200, 120, 124, 254, 173, 211, 0, 217, 78, 237, 67, 240, 214, 92, 250, 48, 53, 230, 168, 42, 228, 108, 42, 122, 204, 185, 121, 220, 81, 133, 113, 120 }),
                new BigInteger(new byte[] { 104, 130, 191, 13, 199, 185, 44, 145, 65, 138, 94, 40, 187, 183, 165, 83, 29, 235, 29, 166, 108, 83, 224, 140, 32, 9, 86, 244, 207, 47, 138, 185, 69, 134, 144, 127, 107, 37, 198, 21, 144, 84, 221, 81, 245, 222, 237, 194, 51, 32, 111, 89, 220, 100, 88, 21, 161, 51, 237, 189, 99, 55, 192, 18, 0, 165, 162, 40, 98, 81, 147, 30, 1, 231, 162, 157, 23, 207, 30, 85, 212, 235, 209, 45, 246, 243, 142, 174, 115, 213, 45, 58, 105, 253, 12, 124, 26, 148, 205, 28, 44, 155, 188, 220, 190, 134, 61, 158, 237, 158, 106, 252, 143, 100, 162, 241, 65, 229, 161, 126, 142, 244, 181, 141, 36, 89, 180, 3, 218, 38, 130, 131, 1, 1, 40, 56, 47, 245, 110, 111, 181, 239, 192, 212, 106, 48, 171, 5, 90, 26, 58, 53, 242, 79, 141, 55, 230, 47, 183, 101, 210, 58, 196, 199, 27, 231, 250, 141, 60, 106, 194, 76, 118, 49, 200, 159, 52, 225, 34, 243, 174, 174, 168, 191, 235, 77, 145, 178, 116, 240, 82, 255, 62, 9, 157, 123, 42, 248, 184, 131, 54, 29, 201, 240, 88, 237, 190, 192, 134, 238, 3, 4, 12, 195, 182, 35, 145, 5, 219, 206, 86, 72, 24, 75, 23, 194, 14, 108, 147, 77, 116, 59, 40, 158, 189, 144, 229, 183, 103, 253, 142, 208, 43, 134, 237, 77, 243, 122, 82, 122, 234, 37, 28, 234, 45, 238, 4, 125, 217, 149, 223, 82, 44, 57, 122, 199, 220, 109, 6, 38, 61, 217, 157, 221, 63, 134, 28, 146, 94, 202, 207, 147, 25, 25, 99, 78, 30, 62, 113, 207, 139, 104, 222, 209, 29, 60, 163, 242, 12, 37, 113, 133, 115, 44, 61, 16, 135, 62, 170, 167, 210, 114, 30, 15, 197, 76, 56, 19, 214, 43, 169, 158, 252, 55, 154, 213, 250, 204, 192, 3, 226, 41, 134, 57, 88, 74, 31, 237, 220, 82, 198, 223, 147, 202, 252, 25, 73, 207, 12, 209, 3, 143, 28, 224, 124, 211, 136, 60, 145, 103, 22, 187, 126, 166, 196, 168, 235, 229, 182, 123, 44, 74, 55, 132, 101, 201, 10, 49, 58, 129, 140, 42, 192, 238, 0, 82, 12, 166, 189, 133, 193, 227, 91, 116, 59, 10, 96, 237, 5, 84, 45, 99, 25, 144, 165, 184, 88, 152, 122, 178, 200, 87, 1, 16, 219, 235, 251, 144, 166, 113, 156, 69, 40, 49, 185, 72, 239, 194, 72, 90, 104, 29, 43, 230, 84, 40, 17, 47, 72, 71, 250, 116, 43, 10, 188, 106, 225, 75, 153, 80, 14, 207, 70, 148, 184, 231, 59, 232, 215, 93, 201, 150, 80, 31, 74, 171, 43, 27, 188, 178, 217, 204, 72, 95, 119, 40, 26, 30, 116, 79, 102, 164, 41, 248, 76, 152, 214, 151, 46, 108, 236, 41, 88, 234, 125, 100, 35, 11, 191, 16, 63, 197, 142, 230, 118, 65, 135, 231, 29, 143, 204, 29, 115, 135, 246, 37, 108, 88, 211, 177, 212, 147, 237, 79, 198, 176, 116, 93, 225, 19, 4, 15, 94, 100, 16, 161, 21, 66, 129, 10, 17, 239, 122, 158, 160, 207, 182, 208, 244, 88, 247, 203, 55, 14, 59, 171, 216, 63, 32, 198, 205, 41, 5, 10, 139, 188, 190, 15, 119, 85, 16, 42, 214, 201, 159, 229, 25, 79, 175, 246, 249, 164, 105, 137, 27, 56, 216, 80, 40, 100, 200, 214, 34, 187, 61, 232, 234, 112, 18, 227, 16, 167, 88, 159, 72, 205, 245, 110, 110, 86, 146, 137, 143, 41, 204, 41, 192, 123, 238, 83, 228, 110, 230, 18, 140, 58, 7, 26, 140, 183, 250, 168, 60, 203, 229, 82, 75, 201, 65, 78, 66, 105, 225, 209, 210, 63, 70, 248, 238, 19, 39, 110, 129, 190, 254, 162, 192, 70, 18, 13, 197, 218, 226, 182, 92, 233, 76, 195, 68, 122, 221, 246, 58, 160, 17, 123, 140, 21, 64, 77, 243, 15, 43, 120, 143, 139, 39, 125, 205, 67, 146, 5, 182, 51, 137, 103, 135, 43, 117, 233, 242, 130, 179, 116, 54, 49, 52, 225, 173, 131, 21, 170, 5, 197, 26, 181, 174, 106, 38, 208, 194, 206, 246, 1, 231, 216, 63, 6, 23, 169, 243, 97, 159, 87, 90, 113, 91, 183 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 244, 59, 44, 170, 37, 221, 223, 139, 132, 163, 64, 134, 19, 185, 87, 16, 126, 53, 194, 177, 204, 67, 92, 78, 2, 50, 244, 90, 36, 135, 200, 124, 203, 47, 226, 32, 205, 133, 15, 8 }),
                new BigInteger(new byte[] { 158, 96, 200, 233, 243, 184, 0, 33, 203, 210, 80, 174, 198, 244, 177, 223, 221, 168, 243, 233, 133, 103, 252, 219, 195, 187, 227, 215, 54, 66, 248, 37, 186, 232, 45, 227, 147, 100, 14, 121, 244, 56, 89, 181, 120, 205, 4, 59, 48, 65, 239, 221, 28, 30, 68, 55, 99, 237, 38, 56, 213, 40, 234, 136, 218, 42, 244, 222, 198, 205, 75, 121, 153, 122, 245, 76, 13, 71, 98, 246, 182, 167, 166, 245, 82, 27, 9, 155, 164, 246, 127, 166, 62, 213, 164, 203, 78, 208, 219, 77, 217, 38, 117, 99, 245, 118, 67, 161, 41, 247, 41, 28, 138, 48, 129, 45, 130, 244, 54, 190, 33, 89, 57, 208, 78, 165, 58, 196, 213, 41, 253, 61, 108, 21, 28, 143, 50, 67, 255, 219, 215, 103, 113, 172, 204, 99, 27, 14, 83, 119, 72, 89, 154, 28, 44, 128, 237, 165, 20, 80, 60, 127, 204, 0, 250, 236, 176, 117, 19, 242, 250, 63, 244, 90, 231, 186, 231, 140, 3, 234, 137, 44, 112, 94, 224, 163, 162, 80, 232, 156, 162, 141, 46, 175, 159, 88, 155, 113, 178, 224 }),
                new BigInteger(new byte[] { 86, 219, 99, 192, 49, 36, 223, 106, 185, 208, 239, 215, 76, 196, 165, 48, 160, 140, 206, 199, 70, 220, 95, 114, 62, 118, 16, 131, 237, 68, 208, 86, 17, 71, 180, 61, 57, 33, 1, 143, 11, 199, 166, 74, 135, 50, 251, 196, 207, 190, 16, 34, 227, 225, 187, 200, 156, 18, 217, 199, 42, 215, 21, 119, 37, 213, 11, 33, 57, 50, 180, 134, 102, 133, 10, 179, 242, 184, 157, 9, 73, 88, 89, 10, 173, 228, 246, 100, 91, 9, 128, 89, 193, 42, 91, 52, 177, 47, 36, 178, 38, 217, 138, 156, 10, 137, 188, 94, 214, 8, 214, 227, 117, 207, 126, 210, 125, 11, 201, 65, 222, 166, 198, 47, 177, 90, 197, 59, 42, 214, 2, 194, 147, 234, 227, 112, 205, 188, 0, 36, 40, 152, 142, 83, 51, 156, 228, 241, 172, 136, 183, 166, 101, 227, 211, 127, 18, 90, 235, 175, 195, 128, 51, 255, 5, 19, 79, 138, 236, 13, 5, 192, 11, 165, 24, 69, 24, 115, 252, 21, 118, 211, 143, 161, 31, 92, 93, 175, 23, 99, 93, 114, 209, 80, 96, 167, 100, 142, 77, 31 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 165, 251, 97, 124, 9, 100, 64, 52, 114, 152, 96, 161, 41, 198, 16, 15, 109, 31, 86, 73, 95, 140, 118, 79, 108, 17, 69, 186, 143, 30, 118, 218, 35, 55, 227, 48, 14, 225, 215, 63, 98, 27, 118, 4, 66, 236, 4, 232, 143, 73, 45, 81, 92, 150, 83, 25, 132, 18, 16, 248, 31, 134, 165, 83, 33, 134, 126, 242, 227, 223, 0, 140, 72, 23, 230, 68, 22, 113, 13, 128, 12, 92, 42, 70, 241, 36, 125, 140, 228, 202, 171, 252, 209, 222, 31, 220, 118, 34, 226, 187, 110, 18, 5, 176, 72, 161, 9, 69, 176, 14, 2, 19, 4, 143, 235, 194, 91, 94, 97, 252, 8, 241, 13, 24, 51, 4, 186, 105, 247, 10, 206, 243, 142, 81, 18, 250, 87, 121, 253, 80, 27, 56, 220, 213, 200, 152, 247, 65 }),
                new BigInteger(new byte[] { 92, 128, 23, 192, 229, 178, 124, 4, 236, 125, 68, 230, 160, 77, 166, 64, 14, 132, 179, 125, 241, 107, 225, 97, 17, 225, 208, 21, 55, 80, 154, 12, 120, 117, 154, 137, 182, 50, 169, 158, 149, 245, 106, 252, 185, 105, 122, 234, 54, 149, 185, 20, 68, 196, 2, 241, 159, 182, 175, 4, 226, 103, 204, 156, 227, 55, 109, 42, 178, 28, 137, 219, 219, 20, 231, 251, 0, 229, 167, 167, 103, 229, 223, 162, 150, 133, 200, 180, 115, 169, 234, 0, 131, 165, 188, 46, 41, 206, 25, 129, 252, 80, 55, 25, 11, 221, 57, 47, 221, 6, 240, 185, 14, 7, 156, 253, 136, 42, 5, 93, 111, 185, 182, 9, 50, 137, 88, 53, 88, 184, 210, 50, 203, 38, 171, 23, 173, 198, 151, 185, 75, 152, 215, 109, 184, 48, 242, 124, 8, 190, 166, 255, 201, 188, 18, 67, 153, 46, 230, 130, 133, 3, 215, 36, 52, 190, 238, 232, 91, 133, 80, 193, 146, 76, 17, 214, 226, 73, 80, 2, 150, 219, 45, 153, 18, 210, 105, 15, 19, 104, 125, 126, 223, 20, 51, 72, 193, 178, 56, 250, 65, 9, 33, 130, 110, 228, 108, 124, 170, 60, 97, 79, 221, 227, 235, 170, 214, 61, 17, 97, 85, 222, 212, 242, 7, 209, 226, 126, 24, 201, 21, 47, 16, 86, 192, 141, 186, 171, 43, 45, 102, 236, 101, 215, 7, 45, 161, 252, 41, 136, 114, 131, 161, 215, 165, 99, 53, 46, 122, 157, 2, 237, 100, 225, 39, 49, 62, 135, 34 }),
                new BigInteger(new byte[] { 73, 123, 74, 188, 35, 177, 195, 47, 134, 26, 28, 187, 136, 120, 106, 206, 94, 155, 162, 203, 109, 32, 149, 237, 90, 48, 116, 164, 88, 206, 219, 205, 171, 193, 72, 167, 87, 174, 46, 161, 204, 37, 11, 8, 136, 130, 138, 253, 88, 180, 115, 60, 24, 210, 80, 40, 228, 91, 96, 243, 61, 30, 217, 182, 61, 78, 17, 200, 49, 195, 119, 176, 108, 2, 255, 72, 21, 140, 101, 216, 164, 118, 74, 163, 90, 159, 180, 215, 112, 33, 193, 251, 78, 57, 99, 173, 77, 84, 200, 58, 114, 193, 205, 150, 61, 196, 207, 21, 211, 7, 18, 89, 245, 135, 79, 197, 210, 51, 92, 159, 153, 55, 87, 14, 1, 123, 97, 52, 159, 82, 251, 192, 195, 42, 103, 226, 170, 178, 101, 151, 207, 159, 4, 104, 16, 104, 5, 197, 247, 65, 89, 0, 54, 67, 237, 188, 102, 209, 25, 125, 122, 252, 40, 219, 203, 65, 17, 23, 164, 122, 175, 62, 109, 179, 238, 41, 29, 182, 175, 253, 105, 36, 210, 102, 237, 45, 150, 240, 236, 151, 130, 129, 32, 235, 204, 183, 62, 77, 199, 5, 190, 246, 222, 125, 145, 27, 147, 131, 85, 195, 158, 176, 34, 28, 20, 85, 41, 194, 238, 158, 170, 33, 43, 13, 248, 46, 29, 129, 231, 54, 234, 208, 239, 169, 63, 114, 69, 84, 212, 210, 153, 19, 154, 40, 248, 210, 94, 3, 214, 119, 141, 124, 94, 40, 90, 156, 202, 209, 133, 98, 253, 18, 155, 30, 216, 206, 193, 120, 221 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 240, 43, 18, 227, 250, 104, 121, 253, 235, 217, 48, 229, 84, 143, 87, 145, 142, 57, 177, 93, 88, 139, 48, 142, 43, 120, 136, 131, 176, 213, 238, 25, 217, 202, 152, 71, 113, 189, 220, 60, 234, 55, 66, 160, 108, 28, 152, 212, 138, 149, 163, 5, 214, 197, 6, 100, 250, 131, 184, 129, 224, 245, 76, 21, 234, 22, 12, 138, 247, 16, 31, 208, 93, 116, 115, 32, 73, 143, 33, 14, 223, 180, 249, 26, 49, 233, 67, 20, 196, 52, 76, 238, 4, 90, 91, 244, 234, 45, 181, 86, 16, 14, 220, 121, 118, 211, 167, 97, 81, 229, 27, 107, 98, 169, 161, 44, 251, 50, 228, 0, 211, 247, 197, 194, 195, 49, 204, 3, 24, 126, 53, 28, 217, 203, 253, 209, 215, 127, 163, 94, 66, 225, 194, 222, 25, 224, 139, 90, 184, 47, 249, 184, 72, 180, 130, 25, 73, 26, 182, 69, 6, 164, 72, 211, 176, 255, 146, 151, 172, 208, 85, 123, 142, 133, 190, 241, 53, 230, 169, 227, 165, 113, 74, 233, 132, 124, 211, 36, 72, 228, 135, 189, 201, 94, 87, 158, 153, 238, 46, 26, 78, 244, 174, 231, 217, 125, 42, 195, 246, 145, 228, 98, 112, 211, 160, 149, 89, 95, 78, 51, 43, 109, 78, 199, 73, 152, 177, 48, 45, 31, 88, 70, 184, 143, 148, 176, 194, 99, 15, 7, 82, 15, 45, 182, 0, 36, 76, 246, 189, 193, 69, 57, 160, 250, 238, 225, 165, 230, 158, 65, 204, 250, 149, 214, 56, 157, 170, 225, 62, 239, 211, 245, 79, 71, 225, 28, 63, 151, 199, 36, 75, 187, 114, 107, 218, 30, 165, 189, 161, 179, 11, 219, 197, 206, 58, 88, 122, 86, 126, 98, 122, 107, 183, 206, 238, 79, 234, 88, 25, 210, 161, 13, 31, 121, 245, 17, 135, 41, 252, 26, 247, 236, 63, 139, 228, 247, 48, 129, 12, 137, 161, 232, 25, 100, 170, 224, 3, 163, 124, 138, 52, 77, 164, 207, 17, 253, 188, 75, 216, 41, 208, 80, 90, 100, 106, 141, 43, 44, 233, 247, 31 }),
                new BigInteger(new byte[] { 76, 144, 48, 184, 244, 187, 206, 20, 13, 227, 172, 113, 229, 170, 71, 112, 122, 231, 58, 228, 168, 226, 184, 81, 142, 181, 249, 29, 181, 215, 185, 133, 107, 202, 0, 20, 158, 89, 9, 1, 125, 195, 28, 236, 163, 232, 126, 192, 69, 186, 178, 2, 189, 58, 192, 105, 215, 223, 42, 62, 193, 177, 95, 54, 41, 39, 5, 27, 169, 51, 209, 32, 222, 57, 103, 229, 198, 203, 173, 165, 55, 57, 215, 250, 37, 183, 199, 49, 10, 151, 61, 191, 46, 202, 63, 203, 100, 229, 194, 124, 226, 99, 22, 18, 232, 145, 36, 132, 210, 218, 163, 12, 50, 132, 7, 136, 217, 100, 17, 114, 95, 212, 16, 18, 246, 17, 241, 19, 249, 156, 129, 224, 8, 48, 194, 212, 34, 197, 18, 148, 146, 67, 95, 47, 243, 48, 141, 170, 195, 183, 242, 255, 212, 80, 28, 14, 82, 3, 28, 214, 159, 17, 139, 54, 89, 195, 3, 1, 194, 50, 101, 19, 82, 124, 223, 28, 117, 224, 31, 197, 132, 71, 79, 65, 170, 129, 11, 184, 20, 180, 129, 31, 169, 59, 244, 129, 184, 40, 214, 48, 45, 140, 231, 144, 82, 222, 173, 87, 112, 0, 153, 113, 228, 86, 82, 87, 193, 73, 140, 215, 183, 74, 236, 14, 177, 69, 106, 23, 135, 94, 100, 76, 10, 238, 151, 247, 96, 191, 238, 203, 212, 179, 72, 20, 27, 16, 59, 82, 232, 157, 192, 110, 156, 255, 121, 226, 159, 217, 223, 12, 115, 150, 207, 18, 155, 76, 103, 245, 191 }),
                new BigInteger(new byte[] { 164, 155, 225, 42, 6, 173, 170, 232, 222, 246, 131, 115, 111, 228, 15, 33, 20, 82, 118, 121, 175, 168, 119, 60, 157, 194, 142, 101, 251, 253, 52, 148, 109, 0, 152, 51, 211, 99, 211, 59, 109, 116, 37, 180, 200, 51, 25, 20, 69, 219, 240, 2, 25, 139, 70, 250, 34, 164, 141, 67, 31, 68, 237, 222, 192, 239, 6, 111, 78, 221, 77, 175, 127, 58, 12, 59, 130, 195, 115, 104, 167, 123, 34, 32, 11, 50, 124, 226, 185, 157, 14, 47, 214, 143, 27, 41, 134, 72, 242, 217, 45, 170, 197, 103, 142, 65, 131, 221, 126, 10, 120, 94, 48, 37, 154, 164, 33, 206, 210, 142, 115, 35, 181, 176, 205, 31, 219, 239, 30, 225, 179, 59, 208, 155, 59, 253, 180, 186, 144, 202, 175, 157, 99, 175, 38, 175, 254, 175, 244, 119, 6, 185, 115, 99, 102, 11, 247, 22, 154, 111, 102, 146, 189, 156, 87, 60, 143, 150, 234, 157, 240, 103, 60, 9, 223, 212, 192, 5, 138, 30, 33, 42, 251, 167, 218, 250, 199, 108, 51, 48, 6, 158, 32, 35, 99, 28, 225, 197, 88, 233, 32, 104, 199, 86, 135, 159, 124, 107, 134, 145, 75, 241, 139, 124, 78, 62, 152, 21, 194, 91, 115, 34, 98, 184, 152, 82, 71, 25, 166, 192, 243, 249, 173, 161, 252, 184, 97, 164, 32, 59, 125, 91, 228, 161, 229, 19, 17, 164, 213, 35, 133, 202, 3, 251, 116, 255, 5, 13, 191, 52, 89, 100, 198, 195, 157, 80, 67, 236, 126, 239, 211, 245, 79, 71, 225, 28, 63, 151, 199, 36, 75, 187, 114, 107, 218, 30, 165, 189, 161, 179, 11, 219, 197, 206, 58, 88, 122, 86, 126, 98, 122, 107, 183, 206, 238, 79, 234, 88, 25, 210, 161, 13, 31, 121, 245, 17, 135, 41, 252, 26, 247, 236, 63, 139, 228, 247, 48, 129, 12, 137, 161, 232, 25, 100, 170, 224, 3, 163, 124, 138, 52, 77, 164, 207, 17, 253, 188, 75, 216, 41, 208, 80, 90, 100, 106, 141, 43, 44, 233, 247, 31 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 247, 1, 90, 192, 3, 3, 2, 216, 242, 160, 10, 23, 46, 234, 157, 245, 176, 11, 117, 181, 88, 134, 223, 226, 88, 62, 227, 53, 120, 206, 169, 70, 147, 141, 166, 190, 19, 220, 252, 117, 223, 199, 230, 62, 2, 92, 103, 229, 116, 166, 156, 92, 127, 10, 3, 112, 33, 120, 104, 196, 31, 205, 96, 36, 247, 195, 132, 161, 67, 223, 225, 212, 14, 0, 213, 144, 159, 161, 223, 252, 214, 254, 193, 209, 50, 76, 198, 137, 137, 53, 156, 155, 115, 55, 85, 18, 102, 194, 70, 63, 215, 197, 161, 149, 196, 200, 77, 127, 52, 114, 209, 128, 153, 108, 237, 33, 11, 142, 241, 170, 253, 251, 23, 14, 66, 70, 96, 215, 170, 194, 42, 220, 90, 160, 36, 17, 92, 43, 12, 106, 255, 71, 84, 23, 99, 28, 1, 7, 73, 51, 6, 216, 208, 155, 66, 220, 173, 147, 83, 126, 103, 117, 212, 114, 71, 245, 38, 249, 71, 220, 197, 224, 129, 135, 171, 181, 166, 0, 170, 38, 68, 88, 142, 118, 187, 81, 11, 190, 94, 71, 100, 200, 216, 142, 2, 137, 114, 225, 207, 110, 246, 8 }),
                new BigInteger(new byte[] { 108, 110, 38, 86, 73, 240, 140, 53, 173, 233, 44, 58, 14, 231, 93, 182, 245, 233, 103, 155, 0, 120, 252, 7, 243, 132, 33, 67, 196, 48, 59, 47, 59, 153, 33, 8, 148, 251, 194, 205, 210, 17, 182, 223, 171, 84, 243, 162, 20, 42, 217, 133, 142, 109, 191, 244, 114, 31, 99, 196, 206, 72, 112, 124, 174, 253, 254, 117, 197, 85, 34, 250, 39, 153, 201, 238, 193, 29, 91, 158, 144, 126, 46, 154, 86, 181, 161, 206, 217, 45, 149, 117, 151, 253, 255, 137, 160, 58, 49, 174, 85, 126, 221, 190, 8, 223, 94, 244, 164, 208, 50, 85, 196, 196, 51, 80, 26, 214, 37, 248, 91, 48, 155, 151, 192, 173, 99, 42, 154, 63, 77, 135, 235, 172, 73, 18, 161, 111, 145, 119, 87, 172, 41, 8, 250, 64, 176, 211, 201, 175, 110, 201, 20, 57, 82, 37, 226, 69, 254, 91, 124, 51, 90, 100, 131, 171, 105, 23, 123, 33, 174, 170, 69, 174, 160, 175, 6, 147, 157, 127, 252, 144, 96, 235, 209, 131, 114, 178, 89, 35, 48, 91, 113, 53, 251, 36, 82, 196, 133, 79, 214, 152, 87, 168, 0, 196, 132, 102, 153, 163, 30, 79, 168, 126, 95, 236, 211, 110, 147, 255, 57, 183, 189, 87, 240, 83, 57, 15, 178, 124, 93, 66, 13, 78, 169, 99, 56, 184, 235, 12, 255, 12, 25, 182, 5, 224, 178, 242, 214, 15, 80, 227, 48, 133, 21, 31, 219, 0, 183, 172, 138, 116, 180, 29, 69, 220, 65, 90, 213, 251, 179, 26, 131, 135, 0, 45, 158, 7, 82, 15, 161, 71, 57, 162, 43, 122, 17, 135, 56, 137, 136, 56, 1, 63, 129, 138, 87, 252, 112, 41, 159, 88, 28, 218, 91, 54, 95, 169, 133, 232, 129, 211, 173, 167, 11, 67, 59, 17, 241, 203, 202, 186, 34, 76, 115, 123, 24, 68, 5, 117, 213, 162, 150, 41, 112, 72, 43, 95, 70, 244, 26, 103, 1, 79, 8, 180, 138, 90, 51, 62, 79, 70, 10, 164, 94, 229, 53, 208, 102, 224, 29, 27, 164, 15, 19, 222, 60, 132, 54, 194, 24, 220, 202, 253, 177, 99, 184, 210, 67, 191, 241, 190, 16, 198, 38, 142, 151, 241, 203, 139, 19, 91, 248, 102, 214, 254, 194, 241, 60, 41, 119, 5, 35, 113, 38, 114, 124, 12, 243, 250, 44, 98, 140, 167, 239, 95, 10, 221, 233, 132, 71, 75, 185, 170, 175, 189, 227, 100, 38, 178, 160, 198, 150, 25, 71, 235, 154, 159, 160, 179, 18, 138, 254, 208, 94, 176, 206, 80, 119, 119, 243, 229, 8, 183, 226, 44, 75, 120, 194, 105, 143, 23, 230, 65, 89, 102, 203, 115, 96, 3, 196, 107, 61, 53, 114, 188, 77, 232, 76, 254, 238, 147, 236, 175, 190, 187, 189, 223, 55, 26, 159, 33, 221, 55, 36, 250, 164, 188, 118, 247, 228, 91, 240, 115, 178, 136, 167, 210, 68, 38, 223, 98, 44, 195, 122, 251, 43, 55, 130, 157, 168, 236, 60, 69, 99, 163, 142, 6, 17, 119, 23, 144, 114, 84, 26, 147, 162, 120, 252, 54, 20, 235, 154, 16, 59, 61, 245, 25, 188, 40, 207, 108, 57, 216, 78, 248, 31, 171, 16, 15, 250, 161, 192, 205, 14, 79, 240, 215, 169, 231, 89, 178, 58, 76, 137, 189, 81, 43, 9, 38, 173, 116, 73, 233, 167, 170, 86, 153, 5, 34, 116, 247, 104, 236, 60, 114, 42, 205, 2, 236, 76, 29, 112, 213, 207, 29, 49, 237, 79, 145, 166, 243, 161, 234, 97, 133, 87, 215, 37, 99, 248, 87, 210, 135, 114, 98, 73, 78, 16, 23, 147, 131, 41, 29, 217, 144, 4, 116, 26, 138, 121, 105, 73, 116, 123, 128, 85, 125, 139, 182, 26, 82, 168, 158, 243, 244, 74, 233, 98, 108, 211, 227, 220, 55, 253, 34, 202, 131, 16, 209, 129, 227, 189, 154, 234, 143, 13, 94 }),
                new BigInteger(new byte[] { 139, 147, 51, 106, 186, 18, 117, 162, 69, 183, 221, 220, 31, 3, 64, 63, 187, 33, 13, 26, 88, 14, 227, 218, 101, 185, 193, 242, 179, 157, 110, 23, 88, 244, 132, 182, 127, 224, 57, 168, 12, 182, 48, 95, 86, 7, 116, 66, 96, 124, 195, 214, 240, 156, 67, 123, 174, 88, 5, 0, 81, 132, 240, 167, 72, 198, 133, 43, 126, 137, 191, 218, 230, 102, 11, 162, 221, 131, 132, 94, 70, 128, 147, 55, 220, 150, 36, 187, 175, 7, 7, 38, 220, 57, 85, 136, 197, 135, 21, 145, 129, 71, 196, 214, 187, 233, 238, 138, 143, 161, 158, 43, 213, 167, 185, 209, 240, 183, 203, 178, 161, 203, 124, 118, 129, 152, 252, 172, 16, 131, 221, 84, 111, 243, 218, 254, 186, 187, 122, 242, 167, 155, 42, 15, 105, 219, 80, 51, 127, 131, 151, 14, 188, 98, 240, 182, 203, 77, 85, 34, 235, 65, 122, 14, 196, 73, 189, 225, 204, 186, 23, 54, 60, 217, 10, 6, 160, 109, 12, 167, 71, 199, 45, 139, 233, 205, 152, 11, 5, 36, 52, 109, 103, 89, 7, 100, 32, 29, 74, 31, 32, 112, 168, 87, 255, 59, 123, 153, 102, 92, 225, 176, 87, 129, 160, 19, 44, 145, 108, 0, 198, 72, 66, 168, 15, 172, 198, 240, 77, 131, 162, 189, 242, 177, 86, 156, 199, 71, 20, 243, 0, 243, 230, 73, 250, 31, 77, 13, 41, 240, 175, 28, 207, 122, 234, 224, 36, 255, 72, 83, 117, 139, 75, 226, 186, 35, 190, 165, 42, 4, 76, 229, 124, 120, 255, 210, 97, 248, 173, 240, 94, 184, 198, 93, 212, 133, 238, 120, 199, 118, 119, 199, 254, 192, 126, 117, 168, 3, 143, 214, 96, 167, 227, 37, 164, 201, 160, 86, 122, 23, 126, 44, 82, 88, 244, 188, 196, 238, 14, 52, 53, 69, 221, 179, 140, 132, 231, 187, 250, 138, 42, 93, 105, 214, 143, 183, 212, 160, 185, 11, 229, 152, 254, 176, 247, 75, 117, 165, 204, 193, 176, 185, 245, 91, 161, 26, 202, 47, 153, 31, 226, 228, 91, 240, 236, 33, 195, 123, 201, 61, 231, 35, 53, 2, 78, 156, 71, 45, 188, 64, 14, 65, 239, 57, 217, 113, 104, 14, 52, 116, 236, 164, 7, 153, 41, 1, 61, 14, 195, 214, 136, 250, 220, 142, 217, 141, 131, 243, 12, 5, 211, 157, 115, 88, 16, 160, 245, 34, 22, 123, 184, 180, 70, 85, 80, 66, 28, 155, 217, 77, 95, 57, 105, 230, 184, 20, 101, 96, 95, 76, 237, 117, 1, 47, 161, 79, 49, 175, 136, 136, 12, 26, 247, 72, 29, 211, 180, 135, 61, 150, 112, 232, 25, 190, 166, 153, 52, 140, 159, 252, 59, 148, 194, 202, 141, 67, 178, 23, 179, 1, 17, 108, 19, 80, 65, 68, 66, 32, 200, 229, 96, 222, 34, 200, 219, 5, 91, 67, 137, 8, 27, 164, 15, 140, 77, 119, 88, 45, 187, 217, 32, 157, 211, 60, 133, 4, 212, 200, 125, 98, 87, 19, 195, 186, 156, 92, 113, 249, 238, 136, 232, 111, 141, 171, 229, 108, 93, 135, 3, 201, 235, 20, 101, 239, 196, 194, 10, 230, 67, 215, 48, 147, 198, 39, 177, 7, 224, 84, 239, 240, 5, 94, 63, 50, 241, 176, 15, 40, 86, 24, 166, 77, 197, 179, 118, 66, 174, 212, 246, 217, 82, 139, 182, 22, 88, 85, 169, 102, 250, 221, 139, 8, 151, 19, 195, 141, 213, 50, 253, 19, 179, 226, 143, 42, 48, 226, 206, 18, 176, 110, 89, 12, 94, 21, 158, 122, 168, 40, 218, 156, 7, 168, 45, 120, 141, 157, 182, 177, 239, 232, 108, 124, 214, 226, 38, 111, 251, 139, 229, 117, 134, 150, 182, 139, 132, 127, 170, 130, 116, 73, 229, 173, 87, 97, 12, 11, 181, 22, 157, 147, 44, 28, 35, 200, 2, 221, 53, 124, 239, 46, 126, 28, 66, 101, 21, 112, 242, 161 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 241, 12, 204, 195, 90, 252, 65, 219, 138, 41, 229, 69, 26, 17, 173, 182, 149, 140, 18, 118, 88, 182, 210, 109, 185, 53, 55, 148, 13, 179, 100, 230, 236, 221, 112, 96, 7, 32, 130, 59, 188, 70, 63, 90, 43, 140, 102, 209, 16, 228, 85, 2, 251, 231, 179, 58, 58, 94, 9, 36, 196, 172, 206, 215, 197, 254, 88, 60, 160, 76, 175, 116, 10, 214, 185, 17, 119, 119, 65, 45, 206, 102, 131, 41, 94, 97, 235, 5, 42, 54, 38, 168, 23, 93, 119, 16, 120, 104, 148, 44, 51, 41, 48, 196, 52, 224, 248, 37, 45, 161, 195, 194, 28, 220, 86, 94, 40, 165, 120, 99, 18, 83, 18, 106, 37, 7, 93, 172, 95, 169, 153, 15, 227, 21, 250, 164, 53, 191, 244, 125, 105, 198, 215, 136, 115, 100, 139, 59, 7, 24, 231, 210, 239, 49, 26, 224, 23, 198, 158, 45, 131, 76, 198, 132, 8, 179, 222, 7, 226, 177, 40, 105, 177, 250, 250, 76, 123, 137, 247, 193, 123, 34, 164, 70, 194, 198, 32, 178, 251, 25, 141, 111, 32, 199, 250, 28, 0, 83, 128, 191, 133, 131, 89, 85, 239, 126, 33, 244, 54, 205, 100, 141, 206, 221, 177, 97, 167, 127, 194, 65, 147, 44, 12, 200, 36, 185, 72, 234, 0, 221, 76, 40, 8, 55, 59, 248, 201, 79, 86, 67, 164, 43, 123, 45, 181, 255, 160, 67, 21, 153, 117, 128, 145, 62, 44, 88, 118, 144, 49, 54, 54, 55, 244, 88, 128, 60, 132, 150, 162, 185, 152, 88, 41, 126, 156, 104, 177, 223, 19, 36, 25, 4, 212, 103, 104, 204, 150, 202, 11, 226, 129, 56, 29, 32, 13, 109, 54, 34, 173, 120, 122, 9, 161, 92, 1, 28, 87, 18, 162, 195, 167, 151, 125, 12, 28, 49, 98, 140, 239, 180, 165, 186, 139, 191, 55, 95, 58, 9, 113, 47, 49, 142, 50, 154, 169, 15, 99, 120, 102, 75, 116, 132, 40, 71, 58, 234, 186, 16, 3, 219, 10, 170, 51, 248, 211, 192, 126, 225, 37, 161, 225, 78, 161, 114, 146, 25, 101, 227, 99, 13, 205, 234, 38, 163, 63, 33, 146, 67, 133, 76, 165, 42, 5, 149, 36, 135, 91, 57, 198, 233, 145, 130, 83, 197, 106, 38, 226, 181, 181, 33, 133, 214, 173, 246, 13, 32, 131, 143, 184, 178, 45, 59, 92, 216, 252, 183, 72, 11, 78, 11, 189, 43, 29, 121, 124, 75, 151, 97, 57, 25, 62, 221, 141, 99, 198, 206, 125, 15, 135, 3, 3, 204, 129, 20, 187, 85, 38, 122, 201, 178, 222, 214, 102, 169, 99, 90, 185, 51, 121, 194, 137, 34, 85, 159, 115, 80, 173, 248, 17, 45, 58, 56, 131, 74, 8, 241, 170, 8, 190, 38, 36, 28, 152, 134, 59, 103, 118, 228, 255, 108, 20, 73, 149, 197, 122, 224, 118, 225, 161, 106, 168, 45, 105, 155, 120, 165, 82, 28, 161, 114, 176, 176, 117, 83, 157, 109, 138, 206, 100, 11, 218, 201, 248, 164, 24, 240, 163, 190, 207, 39, 122, 200, 103, 83, 126, 247, 178, 252, 14, 150, 20, 89, 66, 141, 188, 99, 212, 66, 39, 13, 85, 168, 125, 149, 144, 222, 53, 196, 130, 135, 2, 148, 76, 121, 247, 232, 73, 33, 212, 166, 186, 142, 192, 205, 246, 129, 134, 106, 232, 180, 28, 96, 150, 194, 210, 210, 74, 210, 195, 159, 193, 238, 121, 134, 147, 128, 12, 200, 150, 211, 26, 178, 109, 129, 82, 199, 231, 176, 158, 15, 87, 202, 219, 206, 107, 161, 253, 138, 167, 36, 158, 119, 93, 52, 228, 203, 20, 58, 57, 117, 116, 190, 212, 20, 154, 105, 242, 21, 111, 10, 235, 154, 51, 180, 72, 247, 18, 171, 26, 242, 131, 130, 33, 113, 53, 163, 85, 57, 156, 134, 179, 173, 118, 40, 154, 153, 245, 198, 52, 1, 175, 231, 26, 157, 57, 3, 68, 169, 236, 236, 185, 105, 31, 71, 242, 241, 156, 99, 222, 246, 20, 185, 120, 232, 87, 62, 36, 10, 25, 174, 2, 75, 118, 24, 66, 155, 103, 132, 55, 49, 95, 171, 76, 175, 205, 73, 141, 46, 54, 168, 252, 146, 232, 61, 237, 245, 110, 50, 69, 251, 223, 57, 143, 61, 234, 109, 242, 6, 4, 87, 138, 24, 43, 173, 151, 104, 108, 201, 26, 13, 176, 245, 212, 112, 177, 111, 99, 57, 43, 77, 44, 53, 62, 60, 81, 37, 28, 15, 197, 96, 87, 134, 41, 222, 30, 228, 103, 59, 165, 132, 137 }),
                new BigInteger(new byte[] { 23, 56, 74, 234, 101, 30, 139, 122, 9, 184, 219, 183, 43, 84, 218, 238, 91, 114, 76, 93, 3, 186, 182, 42, 204, 245, 82, 205, 8, 40, 148, 166, 196, 134, 30, 6, 241, 103, 191, 253, 131, 75, 87, 158, 170, 113, 178, 201, 10, 120, 223, 50, 56, 43, 162, 92, 129, 32, 29, 111, 204, 189, 113, 224, 36, 53, 243, 165, 54, 212, 253, 243, 178, 79, 217, 184, 99, 24, 127, 90, 66, 136, 195, 144, 72, 97, 110, 152, 228, 193, 132, 208, 74, 79, 48, 197, 217, 118, 121, 117, 126, 13, 147, 53, 122, 236, 127, 233, 82, 233, 249, 104, 160, 194, 44, 68, 250, 224, 151, 195, 199, 91, 193, 116, 79, 44, 168, 99, 30, 19, 222, 236, 158, 10, 220, 53, 244, 141, 22, 92, 225, 132, 70, 250, 200, 28, 47, 135, 34, 236, 203, 248, 223, 182, 173, 34, 76, 31, 230, 77, 67, 28, 202, 62, 11, 13, 202, 150, 230, 247, 79, 108, 202, 59, 225, 66, 21, 199, 172, 50, 252, 33, 64, 49, 72, 229, 12, 231, 92, 185, 232, 213, 166, 200, 24, 196, 186, 7, 238, 186, 81, 153, 160, 42, 156, 95, 46, 164, 213, 107, 13, 133, 114, 179, 80, 34, 220, 152, 246, 37, 0, 226, 57, 44, 15, 122, 197, 2, 35, 28, 136, 13, 216, 241, 224, 99, 128, 21, 149, 233, 183, 104, 18, 241, 172, 98, 98, 242, 119, 245, 232, 33, 17, 201, 185, 111, 96, 115, 27, 33, 153, 43, 129, 184, 227, 255, 173, 128, 211, 237, 161, 198, 3, 13, 109, 152, 207, 72, 128, 172, 24, 211, 138, 45, 52, 102, 252, 14, 55, 113, 3, 12, 249, 115, 79, 139, 231, 90, 13, 172, 181, 225, 31, 137, 84, 33, 29, 3, 91, 33, 160, 23, 243, 110, 9, 198, 160, 83, 131, 124, 2, 158, 73, 97, 234, 148, 204, 143, 189, 225, 177, 116, 58, 211, 247, 54, 179, 0, 217, 18, 73, 248, 179, 22, 209, 235, 25, 138, 105, 137, 235, 147, 214, 145, 169, 22, 152, 189, 159, 191, 84, 141, 70, 121, 112, 43, 221, 32, 119, 211, 18, 160, 122, 113, 51, 10, 235, 51, 144, 254, 123, 65, 38, 51, 246, 29, 157, 168, 41, 224, 158, 245, 97, 26, 189, 187, 178, 57, 165, 165, 14, 249, 19, 150, 119, 74, 24, 101, 94, 159, 43, 101, 45, 160, 67, 19, 103, 18, 131, 82, 141, 52, 246, 150, 52, 29, 62, 96, 179, 119, 88, 177, 141, 235, 240, 130, 46, 143, 188, 171, 5, 56, 74, 138, 181, 56, 200, 192, 214, 170, 83, 159, 182, 83, 24, 217, 2, 124, 97, 90, 12, 184, 178, 230, 71, 121, 216, 66, 175, 192, 228, 216, 86, 215, 77, 85, 234, 108, 225, 251, 84, 125, 137, 8, 36, 184, 251, 57, 210, 22, 127, 177, 45, 98, 159, 76, 133, 100, 66, 59, 96, 134, 16, 21, 198, 123, 73, 223, 5, 195, 239, 150, 155, 101, 5, 142, 47, 169, 194, 142, 126, 158, 111, 152, 64, 50, 171, 244, 55, 0, 207, 133, 41, 166, 155, 206, 108, 115, 66, 169, 111, 28, 51, 15, 39, 233, 22, 199, 92, 17, 29, 220, 162, 180, 188, 194, 23, 119, 213, 147, 208, 85, 167, 4, 243, 105, 108, 245, 202, 54, 33, 187, 102, 24, 31, 98, 106, 95, 113, 87, 28, 227, 151, 38, 227, 242, 227, 117, 233, 216, 183, 245, 158, 175, 216, 26, 116, 46, 28, 189, 124, 33, 252, 38, 239, 97, 117, 137, 149, 90, 88, 183, 6, 125, 119, 236, 189, 128, 33, 0, 133, 247, 11, 242, 127, 44, 29, 183, 64, 4, 237, 59, 67, 180, 218, 250, 231, 113, 54, 130, 125, 90, 224, 143, 128, 255, 238, 32, 56, 236, 92, 244, 13, 27, 55, 132, 21, 10, 166, 195, 67, 190, 72, 144, 108, 28, 116, 81, 162, 124, 5, 76, 73, 158, 131, 42, 23, 124, 113, 127, 61, 252, 126, 83, 167, 249, 45, 39, 124, 85, 229, 220, 202, 115, 62, 190, 17, 79, 35, 99, 139, 156, 125, 188, 231, 15, 170, 111, 152, 12, 109, 153, 153, 39, 133, 70, 63, 245, 232, 114, 239, 76, 213, 76, 151, 40, 130, 214, 95, 196, 24, 199, 89, 13, 244, 160, 127, 194, 108, 152, 79, 190, 143, 111, 232, 75, 67, 163, 237, 247, 127, 28, 102, 176, 116, 63, 199, 48, 37, 190, 141, 212, 15, 211, 243, 165, 63, 139, 51, 229, 199, 124, 136, 80, 35, 48, 188, 101, 100, 75, 229, 223, 232, 104, 68, 252, 97, 168, 153, 180, 216, 78, 157, 174, 10, 123, 174, 187, 123, 66, 11, 183, 112, 8, 47, 2, 147, 21, 141, 67, 130, 98, 204, 217, 217, 173, 235, 167, 143, 247, 68, 151, 242, 126, 12, 121, 223, 218, 69, 167, 130, 1, 233, 34, 63, 45, 110, 223, 56, 65, 104, 75, 27, 85, 50, 118, 129, 195, 212, 93, 143, 7, 44, 132, 254, 116, 197, 242, 252, 182, 35, 185, 207, 229, 193, 128, 120, 170, 154, 171, 63, 12, 110, 77, 142, 249, 123, 156, 75, 149, 247, 27, 5 }),
                new BigInteger(new byte[] { 218, 212, 129, 217, 244, 221, 182, 96, 129, 113, 9, 142, 238, 188, 210, 199, 57, 26, 198, 24, 85, 252, 27, 67, 237, 63, 228, 198, 4, 139, 208, 63, 40, 87, 82, 90, 22, 184, 194, 61, 56, 251, 231, 187, 128, 26, 180, 7, 6, 108, 118, 207, 194, 188, 17, 222, 184, 61, 236, 180, 247, 238, 92, 247, 160, 201, 101, 150, 105, 120, 177, 128, 87, 134, 224, 88, 19, 95, 194, 210, 139, 222, 191, 152, 21, 0, 125, 109, 69, 116, 161, 215, 204, 13, 71, 75, 158, 241, 26, 183, 180, 27, 157, 142, 186, 243, 120, 60, 218, 183, 201, 89, 124, 25, 42, 26, 46, 196, 224, 159, 74, 247, 80, 245, 213, 218, 180, 72, 65, 150, 187, 34, 68, 11, 30, 111, 65, 49, 222, 33, 136, 65, 145, 142, 170, 71, 92, 180, 228, 43, 27, 218, 15, 123, 108, 189, 203, 166, 184, 223, 63, 48, 252, 69, 253, 165, 20, 113, 251, 185, 216, 252, 230, 190, 25, 10, 102, 194, 74, 143, 127, 0, 100, 21, 122, 225, 19, 203, 158, 96, 164, 153, 121, 254, 225, 88, 69, 75, 146, 4, 52, 234, 184, 42, 83, 31, 243, 79, 97, 97, 87, 8, 92, 42, 97, 63, 203, 230, 203, 27, 147, 74, 210, 155, 21, 63, 131, 231, 221, 192, 196, 26, 48, 69, 90, 148, 73, 58, 193, 89, 236, 194, 104, 60, 8, 157, 62, 81, 157, 163, 140, 94, 128, 117, 114, 232, 21, 29, 22, 21, 157, 11, 115, 160, 156, 60, 214, 21, 207, 203, 246, 145, 37, 113, 47, 208, 225, 150, 147, 119, 0, 49, 73, 58, 52, 102, 154, 187, 212, 112, 126, 44, 36, 172, 189, 225, 78, 199, 159, 204, 196, 39, 129, 211, 172, 250, 57, 15, 71, 162, 7, 128, 138, 157, 18, 107, 193, 56, 108, 56, 163, 28, 66, 94, 77, 202, 109, 121, 179, 77, 127, 25, 248, 198, 177, 216, 175, 119, 141, 56, 43, 140, 116, 48, 105, 254, 160, 134, 153, 81, 31, 22, 93, 102, 42, 170, 230, 35, 134, 225, 140, 193, 90, 249, 33, 238, 135, 194, 236, 57, 186, 74, 172, 49, 12, 23, 167, 15, 245, 77, 41, 233, 222, 97, 46, 105, 190, 144, 156, 9, 243, 140, 241, 170, 173, 106, 47, 124, 16, 124, 118, 221, 153, 96, 150, 213, 106, 42, 90, 19, 2, 214, 46, 56, 185, 164, 225, 248, 202, 184, 47, 247, 38, 226, 71, 46, 89, 1, 134, 161, 229, 43, 0, 120, 213, 75, 79, 128, 202, 87, 253, 147, 55, 138, 5, 29, 94, 185, 242, 7, 139, 55, 176, 85, 75, 129, 182, 183, 23, 104, 125, 106, 162, 184, 43, 215, 212, 181, 98, 108, 85, 95, 44, 115, 186, 155, 192, 155, 220, 42, 207, 158, 14, 126, 23, 175, 122, 170, 45, 86, 149, 151, 103, 99, 219, 147, 241, 124, 95, 47, 72, 167, 88, 134, 178, 41, 9, 61, 155, 175, 192, 25, 218, 237, 151, 223, 90, 37, 162, 124, 91, 43, 137, 12, 216, 189, 248, 201, 151, 39, 171, 66, 62, 173, 226, 40, 70, 137, 204, 236, 164, 60, 15, 126, 149, 122, 189, 123, 202, 251, 55, 204, 218, 224, 211, 27, 30, 77, 173, 243, 49, 62, 165, 116, 4, 127, 221, 43, 9, 112, 153, 211, 89, 181, 215, 31, 28, 11, 119, 93, 0, 125, 254, 155, 239, 223, 102, 92, 218, 198, 9, 249, 218, 214, 186, 101, 152, 153, 122, 22, 158, 144, 113, 90, 99, 101, 114, 39, 9, 181, 254, 18, 213, 81, 244, 180, 63, 10, 134, 36, 25, 128, 81, 66, 100, 159, 247, 130, 248, 112, 135, 130, 145, 96, 191, 110, 10, 164, 56, 136, 109, 64, 83, 36, 200, 247, 35, 138, 226, 5, 39, 142, 19, 86, 254, 30, 64, 47, 246, 194, 111, 239, 45, 152, 45, 125, 129, 117, 146, 132, 169, 155, 209, 254, 181, 216, 44, 45, 123, 109, 124, 109, 160, 243, 74, 248, 110, 60, 98, 161, 47, 220, 173, 116, 25, 128, 18, 187, 245, 74, 119, 174, 248, 91, 90, 139, 189, 20, 159, 36, 242, 17, 179, 135, 72, 3, 78, 57, 77, 53, 13, 70, 19, 241, 85, 205, 236, 91, 229, 54, 199, 114, 53, 48, 246, 204, 114, 68, 151, 190, 58, 90, 155, 61, 175, 28, 41, 38, 45, 21, 48, 217, 110, 192, 60, 48, 156, 8, 6, 143, 158, 96, 46, 105, 93, 127, 220, 131, 145, 123, 143, 9, 161, 141, 251, 179, 171, 213, 64, 57, 164, 31, 23, 151, 187, 3, 158, 87, 102, 75, 39, 177, 98, 81, 245, 132, 81, 68, 132, 189, 244, 72, 143, 247, 208, 253, 108, 234, 114, 188, 125, 157, 51, 38, 38, 82, 20, 88, 112, 8, 187, 104, 13, 129, 243, 134, 32, 37, 186, 88, 125, 254, 22, 221, 192, 210, 145, 32, 199, 190, 151, 180, 228, 170, 205, 137, 126, 60, 43, 162, 112, 248, 211, 123, 1, 139, 58, 13, 3, 73, 220, 70, 48, 26, 62, 127, 135, 85, 101, 84, 192, 243, 145, 178, 113, 6, 132, 99, 180, 106, 8, 228, 250 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 24, 122, 212, 101, 36, 202, 103, 124, 227, 130, 29, 175, 123, 53, 148, 178, 254, 215, 41, 41, 30, 131, 152, 223, 245, 4, 248, 40, 167, 102, 190, 8, 179, 231, 205, 71, 172, 19, 134, 207, 67, 194, 40, 236, 47, 223, 125, 70, 8, 152, 151, 31, 241, 220, 202, 148, 225, 245, 111, 31, 209, 63, 213, 125, 195, 21, 252, 148, 103, 76, 6, 234, 81, 90, 229, 91, 91, 171, 175, 21, 135, 178, 32, 14, 206, 158, 23, 214, 28, 56, 101, 182, 163, 102, 253, 4, 237, 170, 41, 26, 227, 233, 222, 187, 146, 172, 206, 151, 247, 111, 57, 53, 69, 89, 151, 31, 30, 199, 174, 37, 253, 37, 119, 47, 231, 79, 71, 234, 92, 224, 110, 176, 130, 149, 50, 158, 212, 100, 123, 33, 208, 128, 223, 173, 255, 48, 112, 73, 207, 222, 229, 37, 251, 4, 28, 190, 113, 175, 212, 67, 101, 227, 58, 22, 0, 137, 178, 175, 39, 249, 74, 186, 75, 141, 84, 125, 69, 202, 48, 182, 222, 253, 27, 126, 250, 72, 180, 126, 121, 115, 44, 37, 144, 56, 187, 237, 70, 201, 172, 117, 125, 192, 34, 213, 147, 43, 218, 110, 175, 158, 121, 166, 126, 29, 100, 104, 199, 187, 28, 184, 212, 52, 54, 179, 204, 37, 42, 19, 209, 103, 55, 124, 30, 186, 57, 29, 218, 70, 234, 206, 110, 70, 207, 218, 250, 133, 166, 114, 211, 83, 37, 138, 172, 243, 161, 73, 138, 111, 8, 110, 1, 198, 157, 71, 103, 253, 136, 196, 228, 70, 142, 129, 209, 77, 74, 142, 100, 91, 184, 71, 126, 183, 63, 126, 65, 173, 207, 42, 24, 240, 147, 107, 61, 123, 205, 167, 169, 135, 114, 253, 252, 225, 142, 141, 197, 164, 184, 95, 169, 19, 228, 46, 182, 193, 240, 73, 134, 31, 5, 186, 45, 94, 171, 244, 179, 34, 68, 85, 127, 162, 228, 221, 233, 187, 74, 156, 41, 178, 184, 157, 244, 111, 128, 5, 11, 100, 181, 123, 139, 132, 32, 138, 130, 184, 207, 158, 54, 154, 218, 162, 96, 98, 224, 7, 46, 7, 69, 251, 119, 83, 31, 211, 102, 103, 197, 190, 222, 165, 232, 78, 109, 200, 202, 250, 129, 90, 91, 48, 235, 172, 102, 142, 216, 22, 61, 145, 142, 121, 215, 4, 31, 186, 4, 56, 100, 76, 35, 26, 242, 17, 191, 144, 177, 139, 52, 151, 152, 229, 133, 211, 172, 20, 15, 203, 236, 144, 251, 79, 42, 52, 47, 101, 206, 228, 46, 179, 195, 145, 150, 52, 54, 64, 61, 218, 236, 214, 221, 77, 225, 165, 248, 169, 243, 3, 87, 10, 170, 57, 75, 211, 81, 212, 239, 190, 225, 90, 193, 205, 92, 129, 212, 7, 79, 81, 156, 107, 214, 53, 222, 22, 179, 174, 110, 132, 59, 134, 113, 202, 140, 36, 9, 138, 70, 194, 226, 98, 81, 127, 248, 145, 20, 15, 240, 96, 209, 241, 90, 162, 103, 235, 51, 116, 90, 52, 31, 163, 102, 106, 131, 91, 233, 246, 64, 56, 120, 73, 192, 140, 110, 58, 26, 87, 60, 77, 2, 164, 189, 13, 179, 73, 44, 207, 99, 160, 240, 148, 48, 18, 163, 63, 252, 230, 251, 157, 168, 29, 207, 183, 231, 136, 49, 205, 52, 44, 209, 220, 55, 12, 50, 123, 229, 88, 183, 58, 46, 25, 147, 159, 71, 228, 25, 174, 232, 46, 61, 51, 91, 159, 165, 228, 213, 5, 37, 43, 23, 94, 155, 54, 207, 20, 92, 35, 223, 40, 89, 163, 46, 193, 110, 142, 138, 47, 112, 3, 110, 130, 228, 5, 239, 158, 128, 152, 103, 77, 166, 223, 50, 140, 34, 208, 126, 92, 208, 51, 136, 246, 206, 192, 213, 153, 4, 153, 48, 22, 89, 165, 149, 34, 188, 149, 121, 149, 71, 49, 147, 195, 187, 146, 130, 122, 113, 162, 159, 158, 15, 46, 95, 60, 123, 120, 180, 35, 48, 85, 153, 231, 103, 81, 243, 0, 73, 15, 208, 141, 86, 233, 20, 159, 160, 196, 58, 60, 62, 91, 40, 98, 249, 146, 6, 43, 70, 89, 167, 67, 224, 86, 101, 242, 151, 171, 92, 106, 158, 129, 48, 97, 210, 18, 72, 38, 25, 191, 155, 182, 61, 119, 229, 213, 45, 55, 237, 213, 74, 200, 185, 240, 104, 140, 172, 0, 131, 34, 7, 245, 104, 208, 157, 189, 42, 198, 144, 230, 73, 224, 17, 134, 190, 240, 6, 105, 113, 144, 196, 96, 189, 134, 32 }),
                new BigInteger(new byte[] { 199, 63, 248, 69, 102, 72, 162, 247, 184, 166, 78, 109, 217, 39, 170, 102, 167, 6, 139, 105, 182, 51, 50, 120, 134, 67, 143, 243, 93, 167, 55, 225, 175, 199, 245, 235, 205, 74, 128, 1, 61, 25, 206, 23, 161, 152, 143, 73, 229, 94, 185, 183, 251, 182, 32, 148, 13, 128, 191, 35, 185, 175, 153, 17, 111, 108, 189, 18, 50, 190, 152, 93, 134, 137, 44, 156, 100, 26, 214, 237, 180, 70, 13, 255, 237, 127, 230, 249, 167, 96, 221, 77, 138, 93, 72, 142, 128, 189, 168, 53, 218, 124, 22, 38, 197, 92, 48, 113, 137, 131, 47, 242, 169, 210, 111, 114, 161, 154, 35, 239, 134, 196, 107, 209, 225, 74, 210, 40, 64, 158, 28, 167, 114, 161, 18, 55, 47, 230, 58, 145, 79, 116, 111, 35, 49, 235, 164, 184, 238, 213, 236, 229, 153, 185, 174, 22, 16, 68, 69, 122, 137, 8, 48, 235, 103, 135, 128, 7, 191, 55, 67, 186, 95, 146, 160, 18, 84, 71, 160, 246, 166, 26, 58, 107, 178, 54, 14, 184, 242, 252, 38, 235, 161, 192, 7, 70, 67, 132, 188, 169, 106, 156, 249, 182, 146, 49, 133, 6, 25, 156, 194, 200, 163, 79, 211, 111, 205, 197, 57, 48, 121, 199, 20, 194, 16, 88, 25, 159, 139, 89, 206, 207, 139, 247, 139, 9, 33, 131, 216, 128, 177, 7, 159, 86, 57, 94, 71, 81, 236, 151, 121, 125, 75, 140, 48, 162, 136, 54, 166, 57, 24, 229, 123, 191, 205, 242, 61, 172, 195, 202, 78, 73, 236, 184, 127, 113, 39, 190, 136, 178, 17, 200, 179, 243, 223, 81, 132, 255, 199, 233, 129, 234, 221, 158, 104, 203, 139, 224, 136, 71, 32, 154, 141, 33, 73, 47, 144, 146, 12, 190, 122, 201, 173, 244, 40, 79, 50, 136, 223, 124, 110, 62, 229, 218, 73, 99, 108, 77, 80, 180, 230, 71, 53, 65, 145, 118, 58, 145, 169, 176, 192, 241, 242, 8, 110, 183, 61, 232, 118, 24, 152, 2, 0, 12, 217, 226, 181, 178, 216, 229, 194, 67, 65, 88, 216, 50, 148, 108, 99, 178, 20, 160, 223, 47, 188, 124, 76, 220, 107, 145, 38, 132, 215, 56, 27, 227, 71, 41, 104, 174, 192, 136, 185, 195, 237, 125, 175, 153, 48, 60, 35, 208, 133, 195, 3, 248, 35, 208, 79, 92, 150, 217, 71, 71, 191, 62, 107, 9, 61, 244, 234, 106, 3, 180, 241, 140, 230, 27, 66, 63, 204, 178, 171, 47, 109, 85, 254, 19, 52, 34, 192, 119, 218, 11, 24, 231, 64, 113, 4, 174, 17, 166, 92, 60, 81, 184, 205, 209, 210, 118, 17, 7, 141, 16, 143, 227, 45, 24, 217, 105, 63, 87, 212, 26, 52, 115, 144, 247, 155, 10, 76, 117, 23, 148, 45, 38, 86, 111, 221, 181, 136, 45, 65, 190, 17, 184, 233, 201, 124, 52, 185, 40, 152, 154, 110, 186, 209, 65, 8, 221, 39, 213, 53, 199, 42, 156, 239, 249, 226, 104, 141, 190, 58, 36, 224, 18, 21, 22, 9, 123, 138, 198, 123, 103, 80, 35, 220, 124, 37, 115, 85, 20, 102, 0, 141, 179, 248, 122, 147, 116, 201, 239, 231, 19, 167, 250, 238, 116, 186, 92, 164, 186, 56, 141, 82, 97, 90, 205, 119, 6, 192, 114, 212, 110, 19, 120, 88, 57, 151, 45, 25, 155, 130, 148, 177, 155, 222, 103, 192, 85, 53, 104, 194, 201, 207, 154 }),
                new BigInteger(new byte[] { 81, 58, 220, 31, 190, 129, 197, 132, 42, 220, 206, 65, 162, 13, 234, 75, 87, 209, 158, 191, 103, 79, 102, 103, 111, 193, 104, 53, 73, 191, 134, 39, 3, 32, 216, 91, 222, 200, 5, 206, 6, 169, 90, 212, 142, 70, 238, 252, 34, 57, 222, 103, 245, 37, 170, 0, 212, 117, 176, 251, 23, 144, 59, 108, 84, 169, 62, 130, 53, 142, 109, 140, 203, 208, 184, 191, 246, 144, 217, 39, 210, 107, 19, 15, 224, 30, 49, 220, 116, 215, 135, 104, 25, 9, 181, 118, 108, 237, 128, 228, 8, 109, 200, 149, 205, 79, 158, 38, 110, 236, 9, 67, 155, 134, 39, 173, 124, 44, 139, 54, 118, 97, 11, 94, 5, 5, 117, 193, 28, 66, 82, 9, 16, 244, 31, 103, 165, 126, 64, 144, 128, 12, 112, 138, 206, 69, 203, 144, 224, 8, 249, 63, 97, 75, 109, 167, 97, 107, 143, 201, 219, 218, 10, 43, 152, 1, 50, 168, 104, 193, 7, 0, 236, 250, 179, 106, 241, 130, 144, 191, 55, 227, 225, 18, 72, 18, 166, 198, 134, 118, 5, 58, 238, 119, 179, 167, 3, 69, 240, 203, 18, 36, 41, 30, 1, 250, 84, 104, 150, 2, 183, 221, 218, 205, 144, 248, 249, 245, 226, 135, 91, 109, 33, 241, 187, 205, 16, 116, 69, 14, 105, 172, 146, 194, 173, 19, 185, 195, 17, 78, 189, 62, 48, 132, 193, 39, 95, 33, 231, 187, 171, 12, 97, 103, 113, 167, 1, 57, 98, 52, 233, 224, 33, 136, 153, 10, 75, 24, 33, 124, 63, 56, 229, 148, 202, 28, 61, 157, 47, 149, 108, 239, 139, 138, 97, 91, 75, 43, 80, 6, 18, 129, 95, 220, 100, 220, 29, 167, 233, 181, 220, 71, 1, 108, 124, 117, 40, 205, 156, 85, 105, 101, 8, 205, 199, 250, 83, 151, 37, 61, 191, 31, 198, 25, 106, 191, 215, 7, 47, 238, 253, 149, 180, 122, 185, 37, 239, 32, 15, 237, 51, 126, 141, 252, 156, 172, 119, 147, 20, 108, 136, 135, 130, 172, 246, 187, 128, 231, 1, 189, 157, 30, 159, 175, 85, 212, 176, 142, 20, 161, 10, 51, 135, 55, 9, 66, 146, 201, 124, 189, 70, 68, 243, 193, 102, 119, 19, 7, 131, 254, 165, 5, 31, 83, 79, 19, 223, 223, 166, 200, 251, 233, 126, 116, 96, 84, 255, 73, 162, 181, 40, 183, 105, 68, 117, 88, 45, 220, 72, 223, 193, 169, 11, 23, 251, 3, 21, 52, 232, 244, 98, 178, 34, 181, 193, 93, 197, 125, 98, 18, 118, 200, 98, 206, 212, 239, 156, 220, 220, 247, 230, 3, 151, 199, 5, 82, 220, 103, 120, 92, 64, 205, 98, 174, 82, 119, 147, 181, 131, 23, 149, 176, 122, 54, 104, 248, 69, 62, 66, 12, 103, 57, 87, 240, 13, 96, 27, 91, 175, 110, 128, 92, 5, 4, 209, 170, 103, 181, 123, 93, 91, 230, 87, 198, 98, 55, 137, 96, 95, 14, 12, 159, 36, 109, 244, 6, 119, 112, 160, 242, 91, 56, 6, 20, 152, 54, 171, 118, 101, 191, 143, 144, 192, 229, 177, 128, 225, 144, 141, 214, 214, 186, 253, 159, 99, 225, 55, 151, 15, 203, 50, 247, 19, 138, 1, 35, 224, 66, 45, 44, 141, 18, 252, 158, 126, 123, 221, 62, 186, 116, 37, 230, 226, 203, 26, 161, 58, 102, 176, 182, 0, 19, 102, 154, 139, 151, 124, 55, 229, 142, 160, 157, 98, 97, 71, 195, 155, 54, 207, 20, 92, 35, 223, 40, 89, 163, 46, 193, 110, 142, 138, 47, 112, 3, 110, 130, 228, 5, 239, 158, 128, 152, 103, 77, 166, 223, 50, 140, 34, 208, 126, 92, 208, 51, 136, 246, 206, 192, 213, 153, 4, 153, 48, 22, 89, 165, 149, 34, 188, 149, 121, 149, 71, 49, 147, 195, 187, 146, 130, 122, 113, 162, 159, 158, 15, 46, 95, 60, 123, 120, 180, 35, 48, 85, 153, 231, 103, 81, 243, 0, 73, 15, 208, 141, 86, 233, 20, 159, 160, 196, 58, 60, 62, 91, 40, 98, 249, 146, 6, 43, 70, 89, 167, 67, 224, 86, 101, 242, 151, 171, 92, 106, 158, 129, 48, 97, 210, 18, 72, 38, 25, 191, 155, 182, 61, 119, 229, 213, 45, 55, 237, 213, 74, 200, 185, 240, 104, 140, 172, 0, 131, 34, 7, 245, 104, 208, 157, 189, 42, 198, 144, 230, 73, 224, 17, 134, 190, 240, 6, 105, 113, 144, 196, 96, 189, 134, 32 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 217, 173, 43, 89, 42, 2, 141, 180, 86, 27, 121, 0, 46, 162, 180, 221, 140, 66, 8, 56, 163, 219, 183, 130, 242, 13, 33, 209, 87, 176, 11, 158, 120, 155, 126, 140, 107, 212, 239, 152, 245, 224, 91, 128, 101, 103, 145, 178, 128, 139, 54, 134, 199, 98, 57, 254, 246, 169, 102, 29, 225, 187, 92, 165, 16, 218, 136, 146, 36, 40, 113, 184, 83, 111, 66, 195, 127, 55, 28, 139, 123, 110, 81, 204, 122, 132, 215, 22, 98, 128, 150, 193, 109, 209, 183, 58, 131, 181, 112, 138, 223, 255, 142, 88, 25, 126, 51, 87, 31, 117, 126, 190, 140, 219, 161, 114, 106, 144, 43, 139, 3, 113, 48, 163, 146, 176, 74, 129, 184, 8, 64, 202, 199, 146, 172, 124, 223, 248, 178, 251, 81, 128, 246, 237, 2, 215, 52, 145, 48, 68, 207, 242, 137, 228, 135, 109, 206, 235, 198, 105, 51, 177, 159, 22, 52, 180, 247, 250, 47, 37, 147, 113, 221, 48, 58, 130, 123, 67, 161, 186, 123, 184, 81, 115, 56, 78, 64, 226, 10, 63, 173, 244, 50, 73, 200, 160, 224, 224, 184, 77, 223, 58, 98, 10, 177, 94, 20, 89, 170, 4, 242, 139, 73, 11, 237, 123, 95, 44, 221, 230, 115, 20, 240, 240, 119, 158, 62, 148, 104, 154, 161, 154, 139, 83, 219, 65, 86, 70, 193, 218, 57, 231, 56, 5, 76, 34, 170, 39, 91, 76, 64, 180, 2, 209, 218, 202, 73, 114, 146, 19, 32, 128, 241, 16, 98, 87, 0, 245, 48, 172, 37, 24, 106, 3, 173, 140, 220, 234, 163, 85, 243, 23, 57, 27, 89, 237, 152, 185, 121, 16, 247, 228, 180, 174, 185, 185, 245, 39, 162, 245, 33, 180, 246, 174, 39, 39, 73, 254, 36, 77, 237, 95, 206, 61, 31, 9, 71, 214, 182, 117, 191, 70, 124, 32, 181, 65, 100, 188, 74, 243, 151, 181, 71, 173, 51, 63, 32, 138, 243, 50, 163, 153, 149, 43, 34, 151, 21, 118, 143, 176, 114, 31, 113, 45, 54, 218, 56, 214, 249, 230, 194, 141, 180, 48, 182, 56, 24, 32, 9, 223, 233, 188, 226, 131, 210, 37, 177, 80, 253, 29, 43, 238, 45, 153, 129, 119, 67, 25, 119, 89, 6, 73, 144, 12, 112, 22, 228, 101, 117, 233, 127, 244, 109, 175, 199, 181, 60, 237, 91, 17, 41, 232, 216, 220, 186, 212, 95, 27, 175, 62, 245, 254, 169, 176, 217, 159, 44, 213, 19, 187, 64, 76, 218, 20, 157, 55, 128, 126, 210, 203, 59, 86, 190, 101, 47, 30, 112, 180, 81, 155, 182, 201, 181, 54, 244, 129, 74, 189, 213, 39, 137, 102, 217, 159, 208, 221, 13, 196, 62, 131, 83, 225, 73, 227, 3, 158, 63, 67, 128, 186, 47, 119, 131, 119, 5, 118, 150, 163, 32, 28, 236, 195, 168, 170, 65, 213, 124, 30, 149, 82, 17, 172, 118, 206, 72, 212, 128, 209, 51, 85, 65, 6, 60, 26, 248, 18, 226, 97, 154, 89, 70, 105, 164, 33, 151, 143, 57, 158, 162, 45, 33, 33, 174, 46, 169, 131, 0, 181, 47, 48, 246, 196, 112, 202, 219, 229, 134, 141, 177, 47, 242, 27, 132, 59, 11, 167, 8, 85, 55, 184, 155, 225, 47, 5, 51, 32, 88, 13, 113, 117, 17, 44, 50, 105, 99, 130, 249, 217, 70, 177, 9, 171, 237, 114, 59, 6, 156, 114, 35, 1, 123, 171, 126, 118, 149, 21, 149, 106, 151, 187, 141, 120, 28, 60, 30, 197, 232, 26, 216, 137, 174, 46, 14, 133, 175, 239, 244, 189, 202, 44, 131, 229, 234, 111, 250, 101, 174, 187, 212, 78, 237, 143, 65, 139, 36, 144, 143, 177, 84, 117, 29, 129, 154, 154, 83, 76, 156, 249, 199, 165, 32, 215, 159, 106, 55, 167, 142, 172, 65, 184, 23, 45, 70, 138, 155, 31, 237, 131, 97, 31, 95, 66, 104, 85, 14, 1, 75, 80, 28, 174, 200, 180, 244, 46, 45, 21, 239, 215, 83, 124, 1, 227, 111, 156, 93, 240, 59, 15, 254, 52, 94, 25, 152, 167, 69, 222, 111, 74, 91, 54, 92, 62, 144, 147, 239, 98, 56, 23, 93, 134, 47, 21, 48, 228, 29, 124, 210, 204, 247, 30, 198, 60, 81, 231, 79, 175, 28, 76, 233, 78, 165, 165, 124, 29, 32, 195, 82, 220, 172, 250, 184, 35, 177, 119, 5, 73, 232, 179 }),
                new BigInteger(new byte[] { 200, 11, 162, 82, 61, 111, 31, 236, 168, 67, 63, 70, 236, 46, 14, 224, 137, 153, 19, 196, 90, 42, 246, 31, 252, 101, 162, 138, 217, 226, 6, 199, 104, 194, 32, 67, 3, 83, 62, 173, 0, 215, 170, 153, 109, 180, 203, 245, 162, 151, 123, 175, 213, 239, 47, 158, 21, 131, 85, 215, 205, 149, 18, 197, 61, 120, 221, 42, 13, 203, 221, 53, 91, 101, 195, 131, 128, 93, 178, 72, 154, 172, 231, 66, 103, 87, 241, 120, 146, 129, 46, 127, 253, 103, 223, 106, 196, 228, 91, 244, 214, 161, 231, 215, 185, 70, 84, 111, 44, 172, 30, 184, 208, 12, 61, 33, 173, 207 }),
                new BigInteger(new byte[] { 17, 162, 137, 6, 237, 146, 109, 200, 173, 215, 57, 186, 65, 115, 166, 253, 2, 169, 244, 115, 72, 177, 193, 98, 246, 167, 126, 70, 126, 205, 4, 215, 15, 217, 93, 73, 104, 129, 177, 235, 244, 9, 177, 230, 247, 178, 197, 188, 221, 243, 186, 214, 241, 114, 9, 96, 225, 38, 17, 70, 19, 38, 74, 224, 210, 97, 171, 103, 23, 93, 147, 130, 248, 9, 127, 63, 255, 217, 105, 66, 225, 193, 105, 137, 19, 45, 230, 157, 207, 254, 103, 66, 112, 105, 216, 207, 190, 208, 20, 150, 8, 94, 167, 128, 95, 55, 223, 231, 242, 200, 95, 6, 188, 206, 100, 81, 189, 192, 43, 139, 3, 113, 48, 163, 146, 176, 74, 129, 184, 8, 64, 202, 199, 146, 172, 124, 223, 248, 178, 251, 81, 128, 246, 237, 2, 215, 52, 145, 48, 68, 207, 242, 137, 228, 135, 109, 206, 235, 198, 105, 51, 177, 159, 22, 52, 180, 247, 250, 47, 37, 147, 113, 221, 48, 58, 130, 123, 67, 161, 186, 123, 184, 81, 115, 56, 78, 64, 226, 10, 63, 173, 244, 50, 73, 200, 160, 224, 224, 184, 77, 223, 58, 98, 10, 177, 94, 20, 89, 170, 4, 242, 139, 73, 11, 237, 123, 95, 44, 221, 230, 115, 20, 240, 240, 119, 158, 62, 148, 104, 154, 161, 154, 139, 83, 219, 65, 86, 70, 193, 218, 57, 231, 56, 5, 76, 34, 170, 39, 91, 76, 64, 180, 2, 209, 218, 202, 73, 114, 146, 19, 32, 128, 241, 16, 98, 87, 0, 245, 48, 172, 37, 24, 106, 3, 173, 140, 220, 234, 163, 85, 243, 23, 57, 27, 89, 237, 152, 185, 121, 16, 247, 228, 180, 174, 185, 185, 245, 39, 162, 245, 33, 180, 246, 174, 39, 39, 73, 254, 36, 77, 237, 95, 206, 61, 31, 9, 71, 214, 182, 117, 191, 70, 124, 32, 181, 65, 100, 188, 74, 243, 151, 181, 71, 173, 51, 63, 32, 138, 243, 50, 163, 153, 149, 43, 34, 151, 21, 118, 143, 176, 114, 31, 113, 45, 54, 218, 56, 214, 249, 230, 194, 141, 180, 48, 182, 56, 24, 32, 9, 223, 233, 188, 226, 131, 210, 37, 177, 80, 253, 29, 43, 238, 45, 153, 129, 119, 67, 25, 119, 89, 6, 73, 144, 12, 112, 22, 228, 101, 117, 233, 127, 244, 109, 175, 199, 181, 60, 237, 91, 17, 41, 232, 216, 220, 186, 212, 95, 27, 175, 62, 245, 254, 169, 176, 217, 159, 44, 213, 19, 187, 64, 76, 218, 20, 157, 55, 128, 126, 210, 203, 59, 86, 190, 101, 47, 30, 112, 180, 81, 155, 182, 201, 181, 54, 244, 129, 74, 189, 213, 39, 137, 102, 217, 159, 208, 221, 13, 196, 62, 131, 83, 225, 73, 227, 3, 158, 63, 67, 128, 186, 47, 119, 131, 119, 5, 118, 150, 163, 32, 28, 236, 195, 168, 170, 65, 213, 124, 30, 149, 82, 17, 172, 118, 206, 72, 212, 128, 209, 51, 85, 65, 6, 60, 26, 248, 18, 226, 97, 154, 89, 70, 105, 164, 33, 151, 143, 57, 158, 162, 45, 33, 33, 174, 46, 169, 131, 0, 181, 47, 48, 246, 196, 112, 202, 219, 229, 134, 141, 177, 47, 242, 27, 132, 59, 11, 167, 8, 85, 55, 184, 155, 225, 47, 5, 51, 32, 88, 13, 113, 117, 17, 44, 50, 105, 99, 130, 249, 217, 70, 177, 9, 171, 237, 114, 59, 6, 156, 114, 35, 1, 123, 171, 126, 118, 149, 21, 149, 106, 151, 187, 141, 120, 28, 60, 30, 197, 232, 26, 216, 137, 174, 46, 14, 133, 175, 239, 244, 189, 202, 44, 131, 229, 234, 111, 250, 101, 174, 187, 212, 78, 237, 143, 65, 139, 36, 144, 143, 177, 84, 117, 29, 129, 154, 154, 83, 76, 156, 249, 199, 165, 32, 215, 159, 106, 55, 167, 142, 172, 65, 184, 23, 45, 70, 138, 155, 31, 237, 131, 97, 31, 95, 66, 104, 85, 14, 1, 75, 80, 28, 174, 200, 180, 244, 46, 45, 21, 239, 215, 83, 124, 1, 227, 111, 156, 93, 240, 59, 15, 254, 52, 94, 25, 152, 167, 69, 222, 111, 74, 91, 54, 92, 62, 144, 147, 239, 98, 56, 23, 93, 134, 47, 21, 48, 228, 29, 124, 210, 204, 247, 30, 198, 60, 81, 231, 79, 175, 28, 76, 233, 78, 165, 165, 124, 29, 32, 195, 82, 220, 172, 250, 184, 35, 177, 119, 5, 73, 232, 179 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 230, 134, 101, 151, 140, 156, 93, 55, 243, 134, 88, 190, 155, 1, 189, 114, 248, 196, 15, 136, 32, 3, 129, 76, 229, 99, 118, 175, 240, 42, 190, 188, 244, 133, 117, 109, 113, 9, 91, 58, 91, 14, 96, 233, 211, 237, 130, 182, 19, 154, 68, 92, 158, 70, 61, 226, 5, 24, 177, 40, 38, 174, 71, 201, 200, 155, 202, 22, 139, 79, 1, 239, 105, 212, 45, 18, 162, 152, 120, 247, 224, 191, 156, 86, 229, 97, 30, 173, 72, 146, 104, 88, 87, 51, 20, 173, 199, 150, 33, 55, 35, 108, 43, 195, 153, 85, 243, 201, 25, 42, 64, 108, 160, 186, 71, 103, 18, 240, 228, 102, 125, 28, 205, 248, 230, 169, 151, 53, 192, 127, 75, 12, 118, 64, 212, 116, 148, 216, 188, 144, 109, 85, 147, 29, 82, 251, 183, 157, 235, 172, 154, 214, 178, 186, 186, 7, 158, 50, 220, 240, 190, 189, 8, 154, 223, 51, 246, 95, 229, 211, 211, 57, 51, 83, 249, 39, 136, 176, 165, 234, 241, 249, 74, 19, 229, 117, 89, 187, 133, 205, 214, 97, 252, 204, 210, 175, 76, 249, 62, 31, 5, 88, 183, 24, 217, 97, 162, 94, 193, 147, 126, 237, 141, 241, 254, 196, 115, 244, 180, 105, 217, 58, 217, 24, 252, 114, 61, 102, 129, 73, 218, 143, 114, 134, 229, 153, 65, 49, 58, 131, 211, 251, 250, 242, 78, 232, 211, 11, 206, 13, 60, 87, 68, 212, 69, 203, 126, 159, 27, 103, 36, 59, 221, 120, 184, 238, 123, 6, 11, 101, 131, 65, 186, 49, 150, 222, 64, 230, 201, 20, 158, 49, 152, 115, 12, 130, 74, 157, 65, 26, 26, 162, 22, 210, 95, 151, 29, 130, 58, 96, 109, 205, 255, 104, 138, 250, 157, 19, 62, 102, 138, 152, 213, 7, 201, 242, 162, 105, 107, 53, 164, 221, 196, 241, 75, 224, 43, 232, 209, 254, 193, 190, 172, 105, 167, 208, 50, 48, 233, 18, 229, 54, 95, 219, 143, 130, 204, 15, 9, 109, 245, 179, 22, 4, 187, 143, 8, 13, 29, 169, 207, 180, 66, 63, 165, 204, 235, 108, 95, 248, 191, 114, 128, 89, 80, 109, 126, 233, 97, 201, 20, 28, 223, 99, 9, 13, 167, 168, 173, 23, 200, 36, 18, 63, 66, 48, 244, 31, 53, 194, 150, 96, 175, 16, 173, 130, 51, 189, 180, 78, 17, 30, 172, 84, 149, 178, 213, 222, 53, 152, 37, 67, 190, 72, 48, 155, 95, 65, 22, 31, 120, 94, 179, 158, 50, 180, 109, 206, 181, 135, 218, 233, 243, 95, 6, 169, 120, 190, 170, 143, 90, 21, 233, 157, 157, 83, 162, 102, 223, 18, 34, 241, 167, 148, 213, 179, 107, 13, 33, 224, 69, 6, 41, 174, 190, 59, 79, 94, 66, 135, 34, 160, 151, 134, 196, 99, 116, 21, 1, 223, 18, 6, 239, 163, 100, 232, 66, 94, 137, 82, 61, 107, 157, 201, 74, 83, 236, 59, 223, 97, 3, 67, 36, 88, 239, 129, 90, 33, 208, 114, 62, 85, 11, 65, 206, 63, 23, 134, 74, 213, 249, 240, 213, 239, 73, 183, 3, 205, 59, 112, 118, 57, 53, 159, 220, 207, 226, 150, 179, 226, 142, 32, 142, 23, 20, 232, 95, 91, 250, 11, 60, 102, 241, 10, 104, 18, 109, 52, 15, 56, 126, 140, 229, 95, 251, 5, 31, 108, 101, 255, 92, 129, 210, 103, 71, 216, 98, 189, 219, 96, 88, 168, 211, 48, 52, 16, 71, 43, 54, 201, 97, 173, 135, 123, 100, 1, 59, 47, 27, 14, 201, 242, 245, 250, 174, 186, 147, 137, 194, 143, 176, 176, 89, 174, 224, 214, 184, 180, 42, 234, 189, 243, 53, 156, 158, 175, 249, 87, 2, 69, 157, 50, 162 }),
                new BigInteger(new byte[] { 151, 101, 178, 216, 130, 121, 125, 189, 105, 166, 25, 177, 83, 217, 155, 142, 72, 134, 4, 48, 80, 213, 189, 89, 92, 254, 193, 59, 135, 124, 242, 125, 13, 140, 22, 122, 35, 224, 49, 177, 109, 255, 138, 142, 130, 237, 91, 32, 188, 115, 253, 22, 45, 113, 123, 194, 167, 88, 124, 131, 184, 65, 54, 236, 180, 155, 163, 199, 194, 32, 106, 104, 85, 83, 195, 81, 74, 46, 214, 110, 162, 160, 127, 19, 127, 220, 79, 156, 16, 84, 210, 203, 99, 173, 248, 44, 201, 157, 218, 231, 74, 148, 93, 156, 9, 148, 193, 218, 174, 42, 119, 121, 129, 13, 225, 24, 194, 35, 109, 215, 75, 6, 182, 110, 77, 159, 4, 167, 91, 150, 136, 173, 83, 239, 36, 14, 66, 227, 10, 234, 27, 117, 238, 230, 221, 89, 73, 86, 204, 224, 106, 165, 48, 3, 156, 67, 222, 239, 78, 105, 144, 26, 126, 23, 162, 202, 37, 146, 233, 210, 213, 223, 24, 130, 187, 213, 24, 207, 145, 243, 86, 174, 218, 122, 44, 226, 124, 80, 83, 224, 47, 82, 148, 161, 89, 1, 246, 215, 68, 18, 52, 183, 108, 249, 11, 138, 141, 173, 71, 198, 43, 14, 94, 91, 19, 226, 63, 4, 234, 191, 77, 212, 62, 8, 163, 130, 74, 119, 41, 185, 223, 64, 139, 126, 191, 158, 65, 224, 111, 161, 85, 206, 8, 141, 180, 33, 244, 57, 141, 119, 193, 242, 237, 132, 197, 95, 120, 99, 86, 136, 64, 21, 132, 142, 231, 234, 130, 224, 155, 116, 161, 95, 148, 72, 106, 127, 204, 177, 84, 129, 141, 17, 233, 177, 248, 236, 83, 7, 185, 95, 38, 221, 137, 231, 97, 63, 74, 122, 165, 201, 158, 20, 157, 25, 214, 98, 94, 164, 25, 70, 147, 198, 15, 212, 250, 46, 43, 210, 150, 250, 151, 123, 39, 59, 78, 196, 214, 172, 230, 42, 53, 81, 11, 138, 227, 121, 116, 208, 219, 150, 141, 174, 238, 114, 204, 95, 205, 180, 236, 51, 20, 119, 228, 171, 50, 35, 237, 97, 202, 17, 139, 177, 190, 238, 17, 65, 186, 133, 241, 128, 185, 90, 247, 255, 109, 232, 141, 180, 111, 238, 246, 33, 192, 178, 22, 189, 109, 96, 87, 192, 140, 18, 6, 201, 10, 220, 240, 255, 97, 139, 164, 71, 195, 107, 121, 185, 127, 228, 61, 74, 150, 56, 242, 219, 27, 105, 241, 11, 216, 83, 211, 89, 46, 49, 244, 167, 84, 45, 245, 144, 248, 141, 82, 227, 73, 175, 94, 84, 57, 92, 62, 137, 35, 13, 42, 83, 31, 42, 174, 160, 235, 228, 39, 14, 183, 75, 24, 146, 119, 210, 101, 82, 238, 173, 81, 8, 230, 15, 145, 107, 11, 156, 210, 123, 21, 74, 54, 33, 7, 160, 135, 41, 126, 85, 165, 19, 102, 67, 44, 254, 150, 204, 221, 103, 246, 235, 154, 117, 187, 33, 109, 16, 153, 66, 149, 78, 18, 171, 249, 108, 20, 247, 138, 214, 74, 60, 211, 153, 7, 62, 161, 162, 226, 146, 213, 62, 190, 106, 132, 41, 176, 192, 101, 229, 51, 119, 144, 60, 191, 86, 0, 186, 74, 192, 234, 158, 65, 7, 29, 186, 24, 0, 110, 125, 127, 202, 46, 6, 109, 86, 144, 167, 39, 208, 187, 83, 145, 165, 163, 211, 172, 151, 217, 176, 61, 231, 88, 34, 168, 54, 253, 183, 77, 202, 17, 176, 82, 232, 101, 105, 73, 137, 206, 105, 198, 88, 147, 121, 4, 150, 12, 156, 100, 73, 13, 129, 38, 190, 63, 152, 113, 11, 93, 54, 89, 217, 90, 92, 190, 11, 1, 169, 63, 58, 138, 34, 200, 112, 234, 229, 83, 222, 30, 18, 41, 96, 83, 3, 188, 144, 137, 147, 169, 205, 247, 61, 44, 151, 16, 236, 254, 54, 186, 248, 148, 99, 93, 41, 191, 234, 184, 181, 211, 90, 68, 146, 237, 75, 13, 248, 134, 86, 159, 46, 129, 109, 0, 113, 66, 76, 246, 48, 96, 253, 230, 28, 36, 37, 125, 197, 3, 41, 67, 210, 215, 212, 192, 78, 136, 101, 79, 224, 138, 23, 102, 167, 151, 140, 119, 39, 99, 235, 231, 115, 243, 136, 85, 214, 115, 40, 110, 200, 206, 71, 245, 93, 18, 205, 87, 173, 173, 177, 233, 221, 253, 21, 165, 73, 151, 62, 133, 152, 173, 86, 98, 24, 66, 208, 222, 78, 126, 233, 218, 96, 246, 134, 18, 66, 33, 9, 149, 201, 52, 202, 121, 178, 2, 9, 118, 222, 226, 11, 63, 53, 162, 214, 27, 119, 229, 221, 26, 66, 238, 9, 46, 195, 214, 136, 230, 118, 2, 98, 39, 141, 169, 187, 99, 227, 220, 176, 22, 56, 90 }),
                new BigInteger(new byte[] { 79, 33, 179, 190, 9, 35, 224, 121, 137, 224, 62, 13, 72, 40, 33, 228, 175, 62, 11, 88, 208, 45, 195, 242, 136, 101, 180, 115, 105, 174, 203, 62, 231, 249, 94, 243, 77, 41, 41, 137, 237, 14, 213, 90, 81, 0, 39, 150, 87, 38, 71, 69, 113, 213, 193, 31, 94, 191, 52, 165, 109, 108, 17, 221, 19, 0, 39, 79, 200, 46, 151, 134, 20, 129, 106, 192, 87, 106, 162, 136, 62, 31, 29, 67, 102, 133, 206, 16, 56, 62, 150, 140, 243, 133, 27, 128, 254, 248, 70, 79, 216, 215, 205, 38, 144, 193, 49, 239, 106, 255, 200, 242, 30, 173, 102, 78, 80, 204, 119, 143, 49, 22, 23, 138, 153, 10, 147, 142, 100, 233, 194, 94, 34, 81, 175, 102, 82, 245, 177, 166, 81, 224, 164, 54, 116, 161, 110, 71, 31, 204, 47, 49, 130, 183, 30, 196, 191, 66, 141, 135, 46, 163, 138, 130, 61, 105, 208, 205, 251, 0, 254, 89, 26, 209, 61, 82, 111, 225, 19, 247, 154, 75, 112, 152, 184, 147, 220, 106, 50, 237, 166, 15, 104, 43, 121, 174, 86, 33, 250, 12, 209, 160, 74, 31, 205, 215, 20, 177, 121, 205, 82, 223, 47, 150, 235, 226, 51, 240, 202, 169, 139, 102, 154, 16, 89, 240, 242, 238, 87, 144, 250, 78, 231, 7, 38, 251, 255, 80, 202, 225, 125, 45, 242, 101, 154, 198, 223, 209, 64, 150, 122, 100, 86, 79, 128, 107, 6, 60, 197, 222, 227, 37, 89, 234, 208, 3, 249, 37, 111, 240, 225, 225, 37, 233, 43, 95, 116, 52, 117, 147, 16, 32, 175, 193, 19, 149, 246, 149, 136, 186, 243, 196, 140, 234, 253, 87, 211, 7, 149, 150, 206, 184, 98, 79, 180, 151, 63, 111, 36, 32, 247, 209, 197, 51, 206, 195, 119, 151, 212, 58, 12, 98, 157, 182, 253, 27, 85, 59, 235, 211, 140, 109, 161, 223, 195, 86, 190, 95, 13, 124, 87, 136, 112, 104, 195, 34, 255, 90, 28, 57, 225, 60, 50, 88, 136, 108, 27, 171, 82, 151, 68, 3, 132, 80, 147, 139, 49, 231, 109, 119, 6, 24, 137, 89, 226, 132, 240, 52, 242, 218, 29, 250, 30, 177, 242, 79, 57, 72, 86, 87, 59, 18, 12, 118, 55, 84, 3, 32, 211, 54, 242, 24, 236, 164, 51, 201, 179, 216, 118, 4, 123, 229, 185, 120, 121, 73, 228, 210, 93, 68, 82, 233, 143, 23, 60, 243, 10, 20, 33, 142, 127, 208, 96, 187, 232, 4, 15, 122, 124, 43, 156, 96, 208, 82, 220, 85, 89, 148, 252, 238, 110, 48, 193, 143, 230, 7, 138, 212, 103, 64, 188, 158, 185, 230, 131, 171, 133, 253, 143, 116, 58, 106, 86, 50, 169, 241, 24, 61, 59, 231, 154, 118, 25, 49, 31, 80, 14, 210, 212, 224, 123, 57, 17, 60, 110, 252, 167, 232, 205, 48, 208, 90, 4, 135, 181, 4, 218, 144, 229, 244, 238, 75, 153, 129, 164, 69, 135, 135, 200, 52, 157, 178, 40, 174, 248, 0, 89, 27, 198, 171, 73, 48, 112, 10, 22, 64, 115, 144, 124, 25, 118, 127, 234, 222, 241, 48, 161, 143, 150, 40, 118, 32, 32, 154, 148, 29, 49, 85, 141, 181, 171, 190, 201, 58, 172, 190, 219, 142, 107, 100, 209, 244, 11, 175, 189, 30, 198, 73, 189, 200, 95, 201, 132, 157, 53, 40, 16, 213, 117, 247, 14, 31, 5, 199, 109, 183, 179, 177, 49, 51, 85, 17, 35, 50, 87, 128, 20, 113, 219, 117, 87, 231, 152, 196, 85, 225, 56, 45, 4, 132, 175, 7, 26, 116, 86, 180, 240, 67, 64, 4, 106, 21, 23, 138, 117, 79, 166, 84, 70, 180, 19, 159, 248, 49, 8, 194, 211, 104, 239, 19, 1, 201, 69, 7, 107, 156, 162, 214, 64, 21, 71, 74, 44, 165, 187, 109, 18, 180, 242, 7, 121, 169, 96, 209, 126, 146, 255, 142, 189, 179, 9, 207, 159, 2, 25, 227, 219, 218, 130, 58, 252, 214, 188, 45, 40, 43, 63, 177, 119, 154, 176, 31, 117, 232, 153, 88, 104, 115, 136, 216, 156, 20, 24, 140, 12, 119, 170, 41, 140, 215, 145, 55, 49, 184, 10, 162, 237, 50, 168, 82, 82, 78, 22, 34, 2, 234, 90, 182, 104, 193, 122, 103, 82, 169, 157, 231, 189, 47, 33, 177, 129, 22, 37, 159, 9, 121, 237, 189, 222, 246, 106, 54, 203, 53, 134, 77, 253, 246, 137, 33, 29, 244, 192, 202, 93, 41, 228, 136, 26, 34, 229, 189, 17, 246, 209, 60, 41, 119, 25, 137, 253, 157, 216, 114, 86, 68, 156, 28, 35, 79, 233, 199, 165 })
            };

            // Very large - very small
            yield return new object[]
            {
                new BigInteger(new byte[] { 107, 114, 170, 165, 189, 32, 107, 154, 93, 68, 238, 82, 218, 43, 155, 182, 220, 121, 34, 0, 219, 128, 228, 177, 140, 231, 114, 56, 155, 53, 199, 226, 232, 238, 157, 187, 24, 48, 203, 198, 10, 103, 5, 227, 159, 86, 224, 56, 71, 38, 211, 156, 21, 89, 36, 235, 142, 249, 25, 214, 173, 51, 255, 40, 124, 12, 106 }),
                new BigInteger(new byte[] { 236, 141 }),
                new BigInteger(new byte[] { 127, 228, 170, 165, 189, 32, 107, 154, 93, 68, 238, 82, 218, 43, 155, 182, 220, 121, 34, 0, 219, 128, 228, 177, 140, 231, 114, 56, 155, 53, 199, 226, 232, 238, 157, 187, 24, 48, 203, 198, 10, 103, 5, 227, 159, 86, 224, 56, 71, 38, 211, 156, 21, 89, 36, 235, 142, 249, 25, 214, 173, 51, 255, 40, 124, 12, 106 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 157, 171, 174, 92, 245, 115, 123, 1, 18, 53, 6, 58, 240, 117, 97, 42, 204, 142, 202, 177, 44, 31, 23, 244, 25, 214, 104, 220, 102, 147, 235, 244, 170, 102, 136, 40, 238, 185, 99, 176, 112, 141, 231, 227, 208, 115, 66, 137, 199, 82, 63, 220, 33, 220, 179, 126, 148, 185, 66, 31, 11, 158, 154, 127, 74, 17, 143, 138, 237, 56, 59, 18, 42, 25, 65, 159, 55, 51, 36, 166, 147, 223, 21, 19, 83, 14, 210, 206, 179, 10, 148, 53, 118, 68, 165, 209, 242, 104, 153, 190, 227, 184, 156, 142, 22, 44, 178, 8, 154, 19, 70, 97, 149, 156, 140, 43, 137, 134, 43, 59, 62, 193, 214, 227, 164, 6, 155, 229, 115, 111, 172, 207, 154, 101, 194, 218, 66, 134, 252, 38, 92, 202, 51, 159, 195, 51, 160, 218, 184, 121, 72, 107, 60, 93, 127, 33, 225, 185, 234, 16, 144, 204, 148, 43, 103, 119, 198, 47, 217, 177, 233, 2, 138, 4, 223, 115, 141, 55, 31, 113, 102, 193, 45, 249, 38, 65, 146, 60, 230, 161, 248, 137, 156, 236, 150, 143, 54, 8, 56, 76, 108, 112, 0, 7, 144, 69, 225, 55, 125, 11, 147, 170, 153, 120, 170, 206, 159, 154, 4, 38, 228, 138, 73, 56, 184, 95, 102, 157, 110, 80, 61, 133, 255, 211, 5, 245, 193, 38, 105, 225, 95, 90, 190, 218, 13, 78, 239, 35, 65, 199, 239, 155, 3, 18, 104, 225, 39, 199, 78, 48, 223, 67, 201, 45, 206, 14, 170, 198, 115, 181, 12, 121, 48, 35, 198, 137, 203, 110, 43, 106, 111, 67, 92, 167, 96, 161, 130, 237, 107, 35, 205, 250, 215, 56, 2, 27, 145, 145, 12, 255, 163, 41, 175, 140, 186, 118, 107, 223, 75, 223, 22, 185, 156, 228, 192, 155, 231, 34, 204, 44, 139, 189, 91, 80, 232, 18, 161, 248, 33, 171, 247, 57, 98, 43, 198, 70, 147, 207, 236, 234, 54, 162, 162, 139, 12, 20, 94, 243, 120, 102, 51, 111, 197, 223, 115, 229, 206, 94, 164, 167, 212, 114, 189, 160, 231, 221, 86, 112, 29, 122, 8, 24, 53, 226, 245, 233, 27, 207, 68, 212, 179, 174, 127, 187, 119, 136, 116, 130, 184, 224, 120, 52, 43, 69, 21, 195, 228, 2, 164, 47, 189, 238, 213, 253, 94, 27, 58, 227, 233, 138, 202, 254, 26, 208, 243, 38, 242, 2, 40, 95, 104, 212, 183, 60, 2, 211, 236, 240, 204, 50, 4, 25, 42, 20, 22, 197, 217, 130, 93, 92, 77, 145, 152, 45, 22, 121, 26, 91, 81, 239, 208, 226, 217, 69, 198, 233, 54, 152, 251, 139, 46, 74, 22, 183, 133, 176 }),
                new BigInteger(new byte[] { 212, 5 }),
                new BigInteger(new byte[] { 201, 165, 174, 92, 245, 115, 123, 1, 18, 53, 6, 58, 240, 117, 97, 42, 204, 142, 202, 177, 44, 31, 23, 244, 25, 214, 104, 220, 102, 147, 235, 244, 170, 102, 136, 40, 238, 185, 99, 176, 112, 141, 231, 227, 208, 115, 66, 137, 199, 82, 63, 220, 33, 220, 179, 126, 148, 185, 66, 31, 11, 158, 154, 127, 74, 17, 143, 138, 237, 56, 59, 18, 42, 25, 65, 159, 55, 51, 36, 166, 147, 223, 21, 19, 83, 14, 210, 206, 179, 10, 148, 53, 118, 68, 165, 209, 242, 104, 153, 190, 227, 184, 156, 142, 22, 44, 178, 8, 154, 19, 70, 97, 149, 156, 140, 43, 137, 134, 43, 59, 62, 193, 214, 227, 164, 6, 155, 229, 115, 111, 172, 207, 154, 101, 194, 218, 66, 134, 252, 38, 92, 202, 51, 159, 195, 51, 160, 218, 184, 121, 72, 107, 60, 93, 127, 33, 225, 185, 234, 16, 144, 204, 148, 43, 103, 119, 198, 47, 217, 177, 233, 2, 138, 4, 223, 115, 141, 55, 31, 113, 102, 193, 45, 249, 38, 65, 146, 60, 230, 161, 248, 137, 156, 236, 150, 143, 54, 8, 56, 76, 108, 112, 0, 7, 144, 69, 225, 55, 125, 11, 147, 170, 153, 120, 170, 206, 159, 154, 4, 38, 228, 138, 73, 56, 184, 95, 102, 157, 110, 80, 61, 133, 255, 211, 5, 245, 193, 38, 105, 225, 95, 90, 190, 218, 13, 78, 239, 35, 65, 199, 239, 155, 3, 18, 104, 225, 39, 199, 78, 48, 223, 67, 201, 45, 206, 14, 170, 198, 115, 181, 12, 121, 48, 35, 198, 137, 203, 110, 43, 106, 111, 67, 92, 167, 96, 161, 130, 237, 107, 35, 205, 250, 215, 56, 2, 27, 145, 145, 12, 255, 163, 41, 175, 140, 186, 118, 107, 223, 75, 223, 22, 185, 156, 228, 192, 155, 231, 34, 204, 44, 139, 189, 91, 80, 232, 18, 161, 248, 33, 171, 247, 57, 98, 43, 198, 70, 147, 207, 236, 234, 54, 162, 162, 139, 12, 20, 94, 243, 120, 102, 51, 111, 197, 223, 115, 229, 206, 94, 164, 167, 212, 114, 189, 160, 231, 221, 86, 112, 29, 122, 8, 24, 53, 226, 245, 233, 27, 207, 68, 212, 179, 174, 127, 187, 119, 136, 116, 130, 184, 224, 120, 52, 43, 69, 21, 195, 228, 2, 164, 47, 189, 238, 213, 253, 94, 27, 58, 227, 233, 138, 202, 254, 26, 208, 243, 38, 242, 2, 40, 95, 104, 212, 183, 60, 2, 211, 236, 240, 204, 50, 4, 25, 42, 20, 22, 197, 217, 130, 93, 92, 77, 145, 152, 45, 22, 121, 26, 91, 81, 239, 208, 226, 217, 69, 198, 233, 54, 152, 251, 139, 46, 74, 22, 183, 133, 176 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 46, 77, 112, 165, 203, 17, 215, 59, 138, 38, 137, 184, 145, 158, 221, 97, 34, 63, 229, 77, 45, 143, 64, 134, 210, 45, 3, 123, 225, 168, 101, 164, 20, 162, 34, 161, 95, 61, 13, 51, 239, 174, 172, 114, 114, 210, 157, 171, 56, 85, 99, 113, 238, 183, 140, 159, 12, 234, 210, 158, 14, 92, 89, 225, 193, 228, 163, 238, 124, 60, 1, 229, 50, 177, 94, 127, 226, 206, 20, 255, 143, 87, 67, 139, 68, 244, 181, 92, 21, 131, 149, 117, 106, 111, 37, 146, 84, 202, 177, 141, 46, 174, 47, 251, 84, 125, 63, 61, 89, 13, 188, 62, 213, 211, 14, 182, 25, 206, 157, 204, 46, 71, 217, 248, 167, 139, 123, 194, 139, 204, 42, 24, 29, 134, 209, 225, 40, 71, 55, 198, 181, 120, 3, 8, 199, 86, 160, 150, 96, 111, 121, 134, 45, 228, 95, 231, 213, 54, 84, 200, 2, 124, 177, 140, 226, 164, 32, 79, 2, 45, 141, 210, 150, 214, 23, 182, 67, 208, 49, 80, 235, 228, 98, 27, 82, 163, 235, 57, 39, 233, 11, 241, 242, 111, 196, 56, 198, 118, 38, 34, 54, 80, 148, 51, 226, 167, 239, 86, 204, 169, 163, 5, 5, 4, 220, 29, 26, 149, 58, 62, 185, 231, 40, 24, 34, 155, 223, 39, 18, 223, 239, 204, 169, 14, 25, 155, 80, 47, 57, 171, 179, 148, 108, 125, 69, 5, 236, 237, 147, 166, 30, 48, 60, 231, 105, 78, 40, 123, 16, 70, 199, 200, 67, 237, 185, 215, 91, 246, 234, 65, 205, 235, 92, 143, 138, 36, 122, 170, 210, 28, 175, 242, 148, 108, 192, 190, 144, 194, 165, 203, 114, 212, 30, 243, 227, 235, 81, 127, 195, 110, 170, 245, 3, 81, 216, 51, 212, 173, 92, 68, 212, 126, 169, 244, 151, 213, 52, 215, 44, 251, 70, 153, 81, 31, 206, 248, 204, 104, 171, 159, 211, 250, 230, 100, 114, 185, 238, 66, 147, 141, 234, 226, 102, 96, 247, 244, 43, 42, 91, 14, 182, 122, 83, 200, 39, 16, 164, 227, 131, 223, 102, 107, 2, 188, 113, 217, 151, 69, 129, 221, 230, 242, 67, 158, 16, 100, 51, 240, 40, 218, 205, 162, 13, 156, 233, 89, 167, 29, 60, 97, 21, 11, 191, 179, 39, 126, 224, 169, 239, 29, 92, 230, 168, 126, 39, 196, 54, 181, 183, 195, 221, 179, 187, 168, 18, 196, 94, 101, 211, 24, 50, 121, 8, 31, 199, 219, 50, 143, 119, 146, 131, 137, 0, 10, 125 }),
                new BigInteger(new byte[] { 231, 249 }),
                new BigInteger(new byte[] { 71, 83, 112, 165, 203, 17, 215, 59, 138, 38, 137, 184, 145, 158, 221, 97, 34, 63, 229, 77, 45, 143, 64, 134, 210, 45, 3, 123, 225, 168, 101, 164, 20, 162, 34, 161, 95, 61, 13, 51, 239, 174, 172, 114, 114, 210, 157, 171, 56, 85, 99, 113, 238, 183, 140, 159, 12, 234, 210, 158, 14, 92, 89, 225, 193, 228, 163, 238, 124, 60, 1, 229, 50, 177, 94, 127, 226, 206, 20, 255, 143, 87, 67, 139, 68, 244, 181, 92, 21, 131, 149, 117, 106, 111, 37, 146, 84, 202, 177, 141, 46, 174, 47, 251, 84, 125, 63, 61, 89, 13, 188, 62, 213, 211, 14, 182, 25, 206, 157, 204, 46, 71, 217, 248, 167, 139, 123, 194, 139, 204, 42, 24, 29, 134, 209, 225, 40, 71, 55, 198, 181, 120, 3, 8, 199, 86, 160, 150, 96, 111, 121, 134, 45, 228, 95, 231, 213, 54, 84, 200, 2, 124, 177, 140, 226, 164, 32, 79, 2, 45, 141, 210, 150, 214, 23, 182, 67, 208, 49, 80, 235, 228, 98, 27, 82, 163, 235, 57, 39, 233, 11, 241, 242, 111, 196, 56, 198, 118, 38, 34, 54, 80, 148, 51, 226, 167, 239, 86, 204, 169, 163, 5, 5, 4, 220, 29, 26, 149, 58, 62, 185, 231, 40, 24, 34, 155, 223, 39, 18, 223, 239, 204, 169, 14, 25, 155, 80, 47, 57, 171, 179, 148, 108, 125, 69, 5, 236, 237, 147, 166, 30, 48, 60, 231, 105, 78, 40, 123, 16, 70, 199, 200, 67, 237, 185, 215, 91, 246, 234, 65, 205, 235, 92, 143, 138, 36, 122, 170, 210, 28, 175, 242, 148, 108, 192, 190, 144, 194, 165, 203, 114, 212, 30, 243, 227, 235, 81, 127, 195, 110, 170, 245, 3, 81, 216, 51, 212, 173, 92, 68, 212, 126, 169, 244, 151, 213, 52, 215, 44, 251, 70, 153, 81, 31, 206, 248, 204, 104, 171, 159, 211, 250, 230, 100, 114, 185, 238, 66, 147, 141, 234, 226, 102, 96, 247, 244, 43, 42, 91, 14, 182, 122, 83, 200, 39, 16, 164, 227, 131, 223, 102, 107, 2, 188, 113, 217, 151, 69, 129, 221, 230, 242, 67, 158, 16, 100, 51, 240, 40, 218, 205, 162, 13, 156, 233, 89, 167, 29, 60, 97, 21, 11, 191, 179, 39, 126, 224, 169, 239, 29, 92, 230, 168, 126, 39, 196, 54, 181, 183, 195, 221, 179, 187, 168, 18, 196, 94, 101, 211, 24, 50, 121, 8, 31, 199, 219, 50, 143, 119, 146, 131, 137, 0, 10, 125 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 117, 36, 34, 242, 102, 120, 131, 97, 79, 22, 161, 98, 32, 123, 213, 215, 235, 227, 221, 137, 182, 76, 145, 167, 61, 37, 64, 84, 178, 177, 42, 43, 202, 208, 239, 174, 245, 63, 19, 143, 155, 102, 139, 27, 238, 20, 113, 7, 179, 41, 30, 154, 9, 112, 215, 40, 146, 122, 180, 64, 56, 47, 174, 158, 236, 117, 151, 79, 140, 39, 225, 171, 207, 77, 237, 80, 192, 118, 185, 40, 179, 57, 160, 137, 146, 144, 33, 90, 248, 198, 27, 122, 139, 211, 87, 108, 183, 237, 47, 120, 124, 33, 123, 140, 71, 114, 202, 187, 131, 134, 104, 28, 193, 139, 140, 254, 143, 37, 12, 91, 84, 61, 87, 197, 11, 102, 32, 252, 245, 128, 153, 211, 70, 64, 172, 145, 190, 19, 65, 31, 198, 101, 215, 114, 94, 255, 185, 255, 70, 88, 220, 146, 225, 211, 36, 63, 202, 182, 129, 225, 82, 205, 198, 2, 237, 148, 214, 129, 223, 250, 64, 123, 227, 236, 149, 238, 101, 229, 102, 11, 173, 32, 181, 156, 163, 7, 242, 114, 28, 108, 199, 8, 145, 96, 205, 248, 159, 213, 132, 201, 40, 56, 31, 76, 24, 97, 174, 244, 62, 54, 218, 229, 79, 117, 51, 49, 23, 41, 94, 229, 162, 99, 100, 115, 51, 56, 233, 130, 31, 157, 78, 144, 96, 156, 227, 117, 0, 105, 132, 66, 88, 253, 52, 230, 146, 225, 184, 28, 44, 155, 224, 118, 119, 159, 39, 196, 211, 172, 25, 223, 119, 44, 213, 161, 231, 73, 133, 178, 146, 190, 48, 174, 164, 27, 141, 164, 47, 126, 225, 81, 128, 205, 85, 132, 188, 216, 24, 193, 117, 30, 161, 84, 80, 165, 203, 44, 40, 146, 254, 72, 92, 5, 137, 110, 106, 49, 209, 91, 17, 130, 148, 85, 203, 199, 95, 170, 214, 81, 228, 15, 49, 195, 61, 116, 28, 220, 94, 255, 80, 96, 124, 157, 127, 152, 245, 122, 68, 231, 25, 138, 6, 189, 175, 242, 137, 76, 136, 136, 70, 32, 86, 215, 174, 239, 23, 152, 199, 21, 81, 142, 211, 210, 11, 176, 6, 247 }),
                new BigInteger(new byte[] { 213, 50 }),
                new BigInteger(new byte[] { 160, 241, 33, 242, 102, 120, 131, 97, 79, 22, 161, 98, 32, 123, 213, 215, 235, 227, 221, 137, 182, 76, 145, 167, 61, 37, 64, 84, 178, 177, 42, 43, 202, 208, 239, 174, 245, 63, 19, 143, 155, 102, 139, 27, 238, 20, 113, 7, 179, 41, 30, 154, 9, 112, 215, 40, 146, 122, 180, 64, 56, 47, 174, 158, 236, 117, 151, 79, 140, 39, 225, 171, 207, 77, 237, 80, 192, 118, 185, 40, 179, 57, 160, 137, 146, 144, 33, 90, 248, 198, 27, 122, 139, 211, 87, 108, 183, 237, 47, 120, 124, 33, 123, 140, 71, 114, 202, 187, 131, 134, 104, 28, 193, 139, 140, 254, 143, 37, 12, 91, 84, 61, 87, 197, 11, 102, 32, 252, 245, 128, 153, 211, 70, 64, 172, 145, 190, 19, 65, 31, 198, 101, 215, 114, 94, 255, 185, 255, 70, 88, 220, 146, 225, 211, 36, 63, 202, 182, 129, 225, 82, 205, 198, 2, 237, 148, 214, 129, 223, 250, 64, 123, 227, 236, 149, 238, 101, 229, 102, 11, 173, 32, 181, 156, 163, 7, 242, 114, 28, 108, 199, 8, 145, 96, 205, 248, 159, 213, 132, 201, 40, 56, 31, 76, 24, 97, 174, 244, 62, 54, 218, 229, 79, 117, 51, 49, 23, 41, 94, 229, 162, 99, 100, 115, 51, 56, 233, 130, 31, 157, 78, 144, 96, 156, 227, 117, 0, 105, 132, 66, 88, 253, 52, 230, 146, 225, 184, 28, 44, 155, 224, 118, 119, 159, 39, 196, 211, 172, 25, 223, 119, 44, 213, 161, 231, 73, 133, 178, 146, 190, 48, 174, 164, 27, 141, 164, 47, 126, 225, 81, 128, 205, 85, 132, 188, 216, 24, 193, 117, 30, 161, 84, 80, 165, 203, 44, 40, 146, 254, 72, 92, 5, 137, 110, 106, 49, 209, 91, 17, 130, 148, 85, 203, 199, 95, 170, 214, 81, 228, 15, 49, 195, 61, 116, 28, 220, 94, 255, 80, 96, 124, 157, 127, 152, 245, 122, 68, 231, 25, 138, 6, 189, 175, 242, 137, 76, 136, 136, 70, 32, 86, 215, 174, 239, 23, 152, 199, 21, 81, 142, 211, 210, 11, 176, 6, 247 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 228, 102, 238, 55, 89, 8, 115, 20, 75, 234, 208, 83, 214, 184, 47, 10, 164, 238, 144, 129, 92, 179, 46, 149, 139, 183, 51, 177, 254, 235, 145, 119, 86, 181, 98, 186, 103, 159, 84, 230, 163, 132, 124, 42, 129, 58, 252, 26, 219, 166, 97, 9, 69, 176, 117, 48, 55, 89, 172, 161, 213, 193, 21, 95, 89, 88, 252, 32, 86, 116, 163, 4, 153, 169, 222, 216, 54, 4, 19, 80, 186, 25, 214, 88, 138, 136, 49, 165, 63, 49, 131, 13, 243, 179, 17, 225, 110, 29, 208, 40, 61, 220, 195, 102, 3, 93, 111, 156, 210, 157, 249, 50, 69, 91, 230, 187, 235, 188, 213, 209, 38, 87, 224, 36, 241, 149, 17, 230, 151, 252, 105, 25, 52, 234, 18, 222, 85, 111, 85, 44, 24, 149, 211, 162, 55, 81, 200, 151, 204, 86, 246, 177, 71, 255, 2, 230, 252, 159, 117, 109, 75, 137, 4, 213, 51, 224, 254, 90, 73, 8, 102, 123, 103, 168, 185, 144, 132, 61, 237, 159, 205, 121, 25, 65, 6, 184, 210, 53, 232, 44, 226, 182, 249, 231, 225, 142, 144, 253, 110, 87, 83, 109, 78, 196, 240, 122, 74, 159, 70, 113, 98, 190, 178, 214, 160, 209, 111, 195, 207, 123, 13, 201, 114, 28, 38, 175, 130, 127, 199, 42, 0, 134, 206, 149, 76, 95, 43, 85, 80, 140, 109, 50, 239, 119, 201, 35, 4, 35, 71, 15, 30, 204, 45, 243, 73, 137, 251, 49, 157, 64, 247, 202, 216, 27, 113, 219, 239, 28, 137, 64, 166, 26, 114, 67, 13, 218, 218, 250, 83, 2, 171, 94, 56, 183, 11, 51, 89, 219, 75, 194, 100, 250, 183, 16, 148, 162, 90, 211, 6, 237, 52, 231, 154, 6, 105, 4, 89, 234, 229, 110, 175, 0, 221, 155, 148, 153, 146, 32, 16, 61, 130, 19, 208, 198, 220, 171, 99, 98, 174, 106, 128, 6, 244, 101, 206, 196, 196, 49, 78, 7, 217, 110, 246, 221, 19, 99, 28, 27, 124, 251, 16, 58, 194, 200, 107, 32, 23, 211, 41, 189, 160, 247, 59, 122, 238, 168, 12, 120, 205, 208, 212, 96, 210, 9, 100, 19, 29, 243, 179, 120, 143, 71, 229, 179, 90, 69, 68, 43, 250, 173, 172, 240, 7, 144, 102, 225, 50, 123, 238, 106, 87, 164, 78, 172, 38, 175, 104, 185, 100, 87, 3, 36, 32, 177, 46, 89, 18, 136, 31, 168, 100, 224, 125, 31, 35, 228, 88, 65, 162, 131, 224, 162, 4, 72, 32, 235, 248, 57, 141, 171, 221, 138, 199, 163, 170, 136, 207, 86, 97, 13, 207, 170, 91, 69, 5, 119, 38, 47, 136, 65, 86, 38, 23, 224, 118, 97, 31, 215, 144, 67, 96, 216, 251, 116, 203, 218, 25, 218, 116, 154, 20, 2, 223, 149, 179, 54, 70, 190, 67, 169, 196, 201, 176, 75, 85, 182, 115, 230, 45, 73, 105, 248, 198, 30, 172, 246, 175, 231, 122, 43, 93, 75, 186, 238, 45, 83, 70, 129, 44, 63, 26, 97, 148, 230, 126, 151, 39, 176, 31, 20, 103, 50, 173, 43, 49, 28, 60, 193, 232, 189, 134, 94, 68 }),
                new BigInteger(new byte[] { 24, 75 }),
                new BigInteger(new byte[] { 204, 27, 238, 55, 89, 8, 115, 20, 75, 234, 208, 83, 214, 184, 47, 10, 164, 238, 144, 129, 92, 179, 46, 149, 139, 183, 51, 177, 254, 235, 145, 119, 86, 181, 98, 186, 103, 159, 84, 230, 163, 132, 124, 42, 129, 58, 252, 26, 219, 166, 97, 9, 69, 176, 117, 48, 55, 89, 172, 161, 213, 193, 21, 95, 89, 88, 252, 32, 86, 116, 163, 4, 153, 169, 222, 216, 54, 4, 19, 80, 186, 25, 214, 88, 138, 136, 49, 165, 63, 49, 131, 13, 243, 179, 17, 225, 110, 29, 208, 40, 61, 220, 195, 102, 3, 93, 111, 156, 210, 157, 249, 50, 69, 91, 230, 187, 235, 188, 213, 209, 38, 87, 224, 36, 241, 149, 17, 230, 151, 252, 105, 25, 52, 234, 18, 222, 85, 111, 85, 44, 24, 149, 211, 162, 55, 81, 200, 151, 204, 86, 246, 177, 71, 255, 2, 230, 252, 159, 117, 109, 75, 137, 4, 213, 51, 224, 254, 90, 73, 8, 102, 123, 103, 168, 185, 144, 132, 61, 237, 159, 205, 121, 25, 65, 6, 184, 210, 53, 232, 44, 226, 182, 249, 231, 225, 142, 144, 253, 110, 87, 83, 109, 78, 196, 240, 122, 74, 159, 70, 113, 98, 190, 178, 214, 160, 209, 111, 195, 207, 123, 13, 201, 114, 28, 38, 175, 130, 127, 199, 42, 0, 134, 206, 149, 76, 95, 43, 85, 80, 140, 109, 50, 239, 119, 201, 35, 4, 35, 71, 15, 30, 204, 45, 243, 73, 137, 251, 49, 157, 64, 247, 202, 216, 27, 113, 219, 239, 28, 137, 64, 166, 26, 114, 67, 13, 218, 218, 250, 83, 2, 171, 94, 56, 183, 11, 51, 89, 219, 75, 194, 100, 250, 183, 16, 148, 162, 90, 211, 6, 237, 52, 231, 154, 6, 105, 4, 89, 234, 229, 110, 175, 0, 221, 155, 148, 153, 146, 32, 16, 61, 130, 19, 208, 198, 220, 171, 99, 98, 174, 106, 128, 6, 244, 101, 206, 196, 196, 49, 78, 7, 217, 110, 246, 221, 19, 99, 28, 27, 124, 251, 16, 58, 194, 200, 107, 32, 23, 211, 41, 189, 160, 247, 59, 122, 238, 168, 12, 120, 205, 208, 212, 96, 210, 9, 100, 19, 29, 243, 179, 120, 143, 71, 229, 179, 90, 69, 68, 43, 250, 173, 172, 240, 7, 144, 102, 225, 50, 123, 238, 106, 87, 164, 78, 172, 38, 175, 104, 185, 100, 87, 3, 36, 32, 177, 46, 89, 18, 136, 31, 168, 100, 224, 125, 31, 35, 228, 88, 65, 162, 131, 224, 162, 4, 72, 32, 235, 248, 57, 141, 171, 221, 138, 199, 163, 170, 136, 207, 86, 97, 13, 207, 170, 91, 69, 5, 119, 38, 47, 136, 65, 86, 38, 23, 224, 118, 97, 31, 215, 144, 67, 96, 216, 251, 116, 203, 218, 25, 218, 116, 154, 20, 2, 223, 149, 179, 54, 70, 190, 67, 169, 196, 201, 176, 75, 85, 182, 115, 230, 45, 73, 105, 248, 198, 30, 172, 246, 175, 231, 122, 43, 93, 75, 186, 238, 45, 83, 70, 129, 44, 63, 26, 97, 148, 230, 126, 151, 39, 176, 31, 20, 103, 50, 173, 43, 49, 28, 60, 193, 232, 189, 134, 94, 68 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 14, 194, 29, 1, 112, 241, 185, 237, 46, 8, 100, 223, 160, 20, 207, 255, 200, 101, 195, 43, 158, 142, 188, 17, 23, 133, 153, 111, 185, 187, 28, 123, 154, 5, 136, 100, 146, 29, 164, 118, 120, 192, 252, 41, 183, 92, 32, 211, 237, 135, 150, 222, 84, 32, 218, 127, 5, 12, 233, 234, 88, 74, 51, 115, 235, 232, 68, 155, 140, 106, 109, 170, 192, 77, 179, 221, 146, 147, 89, 186, 100, 197, 129, 49, 37, 62, 39, 122, 42, 8, 94, 134, 51, 186, 30, 46, 140, 137, 62, 207, 23, 133, 71, 131, 26, 235, 30, 7, 109, 253, 237, 114, 178, 47, 133, 146, 200, 2, 77, 173, 192, 202, 113, 131, 11, 230, 118, 6, 46, 132, 81, 8, 85, 137, 162, 223, 125, 254, 23, 57, 31, 31, 12, 44, 27, 236, 211, 4, 52, 139, 101, 138, 59, 145, 14, 77, 20, 196, 119, 51, 116, 24, 216, 232, 171, 229, 29, 40, 140, 166, 21, 202, 234, 20, 141, 161, 189, 68, 103, 31, 18, 114, 209, 163, 31, 198, 204, 196, 123, 85, 202, 184, 134 }),
                new BigInteger(new byte[] { 228, 196 }),
                new BigInteger(new byte[] { 42, 253, 29, 1, 112, 241, 185, 237, 46, 8, 100, 223, 160, 20, 207, 255, 200, 101, 195, 43, 158, 142, 188, 17, 23, 133, 153, 111, 185, 187, 28, 123, 154, 5, 136, 100, 146, 29, 164, 118, 120, 192, 252, 41, 183, 92, 32, 211, 237, 135, 150, 222, 84, 32, 218, 127, 5, 12, 233, 234, 88, 74, 51, 115, 235, 232, 68, 155, 140, 106, 109, 170, 192, 77, 179, 221, 146, 147, 89, 186, 100, 197, 129, 49, 37, 62, 39, 122, 42, 8, 94, 134, 51, 186, 30, 46, 140, 137, 62, 207, 23, 133, 71, 131, 26, 235, 30, 7, 109, 253, 237, 114, 178, 47, 133, 146, 200, 2, 77, 173, 192, 202, 113, 131, 11, 230, 118, 6, 46, 132, 81, 8, 85, 137, 162, 223, 125, 254, 23, 57, 31, 31, 12, 44, 27, 236, 211, 4, 52, 139, 101, 138, 59, 145, 14, 77, 20, 196, 119, 51, 116, 24, 216, 232, 171, 229, 29, 40, 140, 166, 21, 202, 234, 20, 141, 161, 189, 68, 103, 31, 18, 114, 209, 163, 31, 198, 204, 196, 123, 85, 202, 184, 134 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 71, 36, 129, 54, 207, 171, 120, 141, 117, 155, 160, 38, 3, 109, 143, 208, 92, 88, 32, 2, 70, 52, 201, 229, 24, 89, 173, 54, 219, 92, 68, 5, 80, 134, 89, 153, 195, 49, 80, 103, 249, 67, 45, 132, 38, 165, 192, 13, 198, 250, 91, 45, 195, 193, 192, 18, 90, 155, 29, 117, 253, 65, 177, 24, 86, 154, 214, 125, 19, 245, 13, 43, 8, 184, 9, 2, 7, 69, 190, 114, 152, 159, 112, 225, 0, 22, 65, 143, 197, 71, 62, 39, 19, 218, 105, 183, 145, 20, 45, 140, 207, 66, 249, 208, 237, 48, 37, 11, 184, 189, 11, 21, 221, 171, 220, 93, 209, 208, 23, 64, 88, 71, 183, 204, 182, 229, 23, 45, 79, 81, 113, 242, 24, 50, 162, 86, 166, 159, 244, 208, 241, 54, 214, 7, 59, 41, 73, 104, 253, 11, 229, 193, 252, 236, 51, 136, 138, 44, 26, 7, 24, 247, 187, 103, 76, 25, 253, 171, 8, 134, 183, 50, 220, 71, 79, 33, 112, 176, 144, 141, 156, 175, 48, 67, 107, 175, 245, 43, 254, 26, 203, 121, 133, 236, 183, 249, 122, 111, 187, 34, 43, 158, 95, 118, 84, 179, 228, 181, 157, 17, 23, 218, 156, 140, 107, 105, 199, 120, 251, 156, 36, 209, 172, 237, 187, 61, 173, 240, 144, 86, 167, 0, 244, 110, 97, 253, 79, 185, 238, 183, 203, 63, 142, 237, 2, 240, 221, 248, 129, 77, 50, 2, 115, 30, 254, 89, 242, 113, 187, 22, 5, 244, 37, 71, 106, 23, 229, 45, 42, 110, 25, 13, 137, 68, 209, 228, 67, 191, 235, 203, 96, 181, 111, 66 }),
                new BigInteger(new byte[] { 35, 164 }),
                new BigInteger(new byte[] { 36, 128, 129, 54, 207, 171, 120, 141, 117, 155, 160, 38, 3, 109, 143, 208, 92, 88, 32, 2, 70, 52, 201, 229, 24, 89, 173, 54, 219, 92, 68, 5, 80, 134, 89, 153, 195, 49, 80, 103, 249, 67, 45, 132, 38, 165, 192, 13, 198, 250, 91, 45, 195, 193, 192, 18, 90, 155, 29, 117, 253, 65, 177, 24, 86, 154, 214, 125, 19, 245, 13, 43, 8, 184, 9, 2, 7, 69, 190, 114, 152, 159, 112, 225, 0, 22, 65, 143, 197, 71, 62, 39, 19, 218, 105, 183, 145, 20, 45, 140, 207, 66, 249, 208, 237, 48, 37, 11, 184, 189, 11, 21, 221, 171, 220, 93, 209, 208, 23, 64, 88, 71, 183, 204, 182, 229, 23, 45, 79, 81, 113, 242, 24, 50, 162, 86, 166, 159, 244, 208, 241, 54, 214, 7, 59, 41, 73, 104, 253, 11, 229, 193, 252, 236, 51, 136, 138, 44, 26, 7, 24, 247, 187, 103, 76, 25, 253, 171, 8, 134, 183, 50, 220, 71, 79, 33, 112, 176, 144, 141, 156, 175, 48, 67, 107, 175, 245, 43, 254, 26, 203, 121, 133, 236, 183, 249, 122, 111, 187, 34, 43, 158, 95, 118, 84, 179, 228, 181, 157, 17, 23, 218, 156, 140, 107, 105, 199, 120, 251, 156, 36, 209, 172, 237, 187, 61, 173, 240, 144, 86, 167, 0, 244, 110, 97, 253, 79, 185, 238, 183, 203, 63, 142, 237, 2, 240, 221, 248, 129, 77, 50, 2, 115, 30, 254, 89, 242, 113, 187, 22, 5, 244, 37, 71, 106, 23, 229, 45, 42, 110, 25, 13, 137, 68, 209, 228, 67, 191, 235, 203, 96, 181, 111, 66 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 214, 111, 8, 10, 221, 254, 216, 177, 214, 26, 71, 130, 235, 10, 175, 205, 18, 51, 37, 120, 47, 76, 25, 22, 51, 134, 239, 182, 80, 133, 226, 35, 197, 137, 15, 190, 34, 99, 60, 14, 177, 146, 250, 202, 252, 61, 255, 192, 176, 231, 92, 14, 254, 44, 93, 137, 86, 242, 215, 86, 14, 33, 97, 80, 55, 35, 188, 97, 251, 241, 171, 175, 247, 22, 198, 157, 81, 79, 25, 246, 135, 47, 5, 105, 41, 212, 36, 153, 44, 133, 103, 48, 139, 229, 255, 143, 48, 169, 146, 216, 128, 157, 197, 191, 59, 172, 22, 232, 102, 192, 55, 6, 216, 225, 207, 223, 28, 247, 39, 99, 254 }),
                new BigInteger(new byte[] { 35, 53 }),
                new BigInteger(new byte[] { 179, 58, 8, 10, 221, 254, 216, 177, 214, 26, 71, 130, 235, 10, 175, 205, 18, 51, 37, 120, 47, 76, 25, 22, 51, 134, 239, 182, 80, 133, 226, 35, 197, 137, 15, 190, 34, 99, 60, 14, 177, 146, 250, 202, 252, 61, 255, 192, 176, 231, 92, 14, 254, 44, 93, 137, 86, 242, 215, 86, 14, 33, 97, 80, 55, 35, 188, 97, 251, 241, 171, 175, 247, 22, 198, 157, 81, 79, 25, 246, 135, 47, 5, 105, 41, 212, 36, 153, 44, 133, 103, 48, 139, 229, 255, 143, 48, 169, 146, 216, 128, 157, 197, 191, 59, 172, 22, 232, 102, 192, 55, 6, 216, 225, 207, 223, 28, 247, 39, 99, 254 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 137, 123, 36, 18, 22, 54, 108, 167, 189, 65, 117, 234, 106, 70, 46, 125, 189, 60, 50, 108, 77, 97, 87, 169, 22, 32, 115, 57, 130, 46, 217, 92, 104, 79, 53, 192, 136, 4, 209, 47, 83, 143, 73, 150, 108, 229, 117, 213, 201, 170, 165, 193, 240, 201, 39, 40, 35, 123, 252, 245, 195, 51, 37, 142, 103, 24, 129, 26, 17, 109, 244, 185, 107, 3, 24, 190, 24, 193, 60, 49, 171, 158, 111, 216, 137, 23, 108, 159, 40, 12, 156, 13, 8, 219, 107, 32, 106, 186, 46, 83, 99, 91, 195, 91, 181, 236, 86, 236, 176, 105, 16, 98, 62, 202, 74, 37, 195, 77, 5, 80, 172, 226, 241, 4, 208, 231, 177, 143, 152, 247, 83, 93, 146, 233, 205, 80, 218, 20, 34, 157, 193, 127, 238, 190, 252, 58, 206, 61, 145, 70, 93, 29, 181, 222, 167, 129, 105, 190, 139, 205, 58, 198, 84, 184, 21, 179, 208, 84, 253, 250, 74, 174, 42, 103, 143, 44, 243, 51, 8, 150, 25, 116, 254, 81, 154, 54, 167, 179, 65, 76, 230, 27, 137, 85, 98, 250, 42, 54, 168, 72, 106, 122, 63, 150, 251, 174, 242, 77, 79, 123, 141, 54, 182, 245, 180, 198, 199, 3, 30, 223, 11, 28, 19, 176, 19, 47, 37, 213, 5, 148, 1, 189, 138, 192, 43, 158, 52, 104, 85, 235, 68, 89, 100, 198, 191, 176, 101, 148, 160, 156, 51, 39, 23, 201, 60, 78, 102, 143, 131, 203, 137, 28, 72, 187, 121, 207, 172, 245, 201, 21, 146, 95, 173, 51, 155, 178, 184, 77, 241, 98, 202, 145, 52, 105, 97, 217, 165, 192, 131, 221, 56, 164, 228, 138, 98, 39, 16, 169, 76, 239, 4, 111, 202, 139, 9, 212, 122, 228, 46, 138, 149, 25, 157, 32, 1, 247, 232, 223, 89, 160, 42, 235, 114, 236, 221, 237, 122, 35, 208, 116, 161, 15, 1, 2, 93, 90, 198, 169, 95, 140, 95, 193, 146, 248, 71, 31, 7, 196, 136, 106, 62, 49, 79, 171, 196, 25, 253, 222, 174, 28, 89, 87, 19, 186, 232, 134, 23, 155, 195, 166, 48, 62, 128, 205, 65, 104, 89, 121, 164, 189, 230, 182, 154, 102, 53, 112, 191, 85, 61, 68, 93, 232, 251, 67, 50, 7, 173, 215, 16, 193, 7, 107, 1, 225, 57, 0, 177, 130, 106, 92, 191, 131, 58, 240, 53, 163, 188, 172, 132, 120, 198, 194, 94, 126, 73, 72, 66, 60, 154, 57, 187, 129, 105, 227, 181, 122, 180, 185, 45, 52, 191, 61, 234, 225, 133, 218, 174, 11, 13, 143, 74, 0, 82, 152, 250, 69, 13, 130, 152, 241, 189, 116, 232, 49, 160, 61, 26, 86, 58, 187, 238, 3, 127, 79, 184, 136, 215, 124, 249, 111, 154, 55, 47, 11, 239, 186, 46, 208, 232, 112, 109, 50, 32, 60, 119, 75, 85, 185, 64, 71, 191, 87, 208, 82, 160, 70, 128, 3, 223, 113, 109, 144, 137, 41, 86, 133, 69, 220, 65, 230, 15, 73, 109, 201, 77, 188, 227, 67, 216, 109, 51, 30, 60, 178, 175, 66 }),
                new BigInteger(new byte[] { 103, 220 }),
                new BigInteger(new byte[] { 34, 159, 36, 18, 22, 54, 108, 167, 189, 65, 117, 234, 106, 70, 46, 125, 189, 60, 50, 108, 77, 97, 87, 169, 22, 32, 115, 57, 130, 46, 217, 92, 104, 79, 53, 192, 136, 4, 209, 47, 83, 143, 73, 150, 108, 229, 117, 213, 201, 170, 165, 193, 240, 201, 39, 40, 35, 123, 252, 245, 195, 51, 37, 142, 103, 24, 129, 26, 17, 109, 244, 185, 107, 3, 24, 190, 24, 193, 60, 49, 171, 158, 111, 216, 137, 23, 108, 159, 40, 12, 156, 13, 8, 219, 107, 32, 106, 186, 46, 83, 99, 91, 195, 91, 181, 236, 86, 236, 176, 105, 16, 98, 62, 202, 74, 37, 195, 77, 5, 80, 172, 226, 241, 4, 208, 231, 177, 143, 152, 247, 83, 93, 146, 233, 205, 80, 218, 20, 34, 157, 193, 127, 238, 190, 252, 58, 206, 61, 145, 70, 93, 29, 181, 222, 167, 129, 105, 190, 139, 205, 58, 198, 84, 184, 21, 179, 208, 84, 253, 250, 74, 174, 42, 103, 143, 44, 243, 51, 8, 150, 25, 116, 254, 81, 154, 54, 167, 179, 65, 76, 230, 27, 137, 85, 98, 250, 42, 54, 168, 72, 106, 122, 63, 150, 251, 174, 242, 77, 79, 123, 141, 54, 182, 245, 180, 198, 199, 3, 30, 223, 11, 28, 19, 176, 19, 47, 37, 213, 5, 148, 1, 189, 138, 192, 43, 158, 52, 104, 85, 235, 68, 89, 100, 198, 191, 176, 101, 148, 160, 156, 51, 39, 23, 201, 60, 78, 102, 143, 131, 203, 137, 28, 72, 187, 121, 207, 172, 245, 201, 21, 146, 95, 173, 51, 155, 178, 184, 77, 241, 98, 202, 145, 52, 105, 97, 217, 165, 192, 131, 221, 56, 164, 228, 138, 98, 39, 16, 169, 76, 239, 4, 111, 202, 139, 9, 212, 122, 228, 46, 138, 149, 25, 157, 32, 1, 247, 232, 223, 89, 160, 42, 235, 114, 236, 221, 237, 122, 35, 208, 116, 161, 15, 1, 2, 93, 90, 198, 169, 95, 140, 95, 193, 146, 248, 71, 31, 7, 196, 136, 106, 62, 49, 79, 171, 196, 25, 253, 222, 174, 28, 89, 87, 19, 186, 232, 134, 23, 155, 195, 166, 48, 62, 128, 205, 65, 104, 89, 121, 164, 189, 230, 182, 154, 102, 53, 112, 191, 85, 61, 68, 93, 232, 251, 67, 50, 7, 173, 215, 16, 193, 7, 107, 1, 225, 57, 0, 177, 130, 106, 92, 191, 131, 58, 240, 53, 163, 188, 172, 132, 120, 198, 194, 94, 126, 73, 72, 66, 60, 154, 57, 187, 129, 105, 227, 181, 122, 180, 185, 45, 52, 191, 61, 234, 225, 133, 218, 174, 11, 13, 143, 74, 0, 82, 152, 250, 69, 13, 130, 152, 241, 189, 116, 232, 49, 160, 61, 26, 86, 58, 187, 238, 3, 127, 79, 184, 136, 215, 124, 249, 111, 154, 55, 47, 11, 239, 186, 46, 208, 232, 112, 109, 50, 32, 60, 119, 75, 85, 185, 64, 71, 191, 87, 208, 82, 160, 70, 128, 3, 223, 113, 109, 144, 137, 41, 86, 133, 69, 220, 65, 230, 15, 73, 109, 201, 77, 188, 227, 67, 216, 109, 51, 30, 60, 178, 175, 66 })
            };

            yield return new object[]
            {
                new BigInteger(new byte[] { 168, 57, 43, 241, 119, 3, 220, 168, 247, 229, 241, 5, 120, 119, 90, 56, 117, 233, 6, 4, 227, 99, 61, 42, 114, 62, 78, 84, 215, 121, 20, 30, 104, 114, 153, 172, 227, 88, 246, 198, 113, 19, 235, 94, 231, 103, 186, 167, 225, 121, 57, 88, 96, 215, 135, 68, 252, 1, 126, 57, 180, 135, 209, 125, 208, 211, 156, 6, 222, 173, 84, 29, 243, 64, 147, 207, 120, 222, 67, 11, 131, 167, 114, 93, 63, 187, 189, 145, 234, 84, 175, 225, 218, 189, 17, 233, 66, 109, 142, 19, 202, 179, 200, 52, 36, 28, 101, 32, 68, 184, 204, 30, 189, 114, 181, 13, 21, 115, 62, 21, 21, 11, 28, 137, 253, 115, 66, 54, 47, 169, 141, 10, 80, 47, 64, 207, 222, 62, 56, 35, 85, 157, 76, 50, 136, 145, 35, 103, 7, 4, 212, 206, 47, 120, 254, 190, 151, 63, 54, 177, 217, 47, 241, 154, 43, 194, 205, 142, 49, 230, 46, 214, 59, 27, 191, 119, 190, 234, 0, 108, 79, 219, 46, 42, 213, 190, 219, 215, 49, 130, 55, 158, 8, 134, 73, 38, 172, 178, 6, 198, 196, 149, 53, 32, 213, 253, 147, 20, 185, 134, 0, 173, 63, 201, 98, 254, 0, 198, 196, 108, 231, 246, 93, 175, 174, 143, 206, 180, 209, 153, 203, 12, 227, 58, 168, 185, 165, 13, 85, 216, 43, 198, 29, 170, 130, 138, 95, 62, 36, 75, 37, 230, 237, 154, 223, 205, 56, 133, 114, 69, 47, 222, 66, 32, 187, 243, 202, 4, 33, 169, 88, 242, 113, 236, 65, 32, 216, 178, 45, 36, 47, 143, 143, 134, 115, 229, 30, 72, 91, 218, 129, 32, 155, 15, 169, 76, 132, 252, 239, 142, 191, 91, 28, 123, 243, 50, 117, 1, 89, 191, 244, 134, 88, 77, 21, 159, 79, 187, 172, 213, 212, 129, 168, 71, 40, 56, 87, 97, 66, 244, 155, 219, 194, 158, 100, 212, 115, 20, 147, 65, 112, 29, 239, 156, 229, 250, 199, 77, 249, 10, 253, 200, 79, 25, 185, 62, 178, 213, 83, 187, 218, 19, 190, 100, 35, 24, 195, 185, 233, 65, 44, 58, 40, 107, 101, 183, 146, 12, 97, 45, 112, 9, 104, 56, 247, 210, 140, 168, 228, 38, 34, 157, 193, 216, 102, 92, 94, 139, 120, 204, 55, 14, 100, 184, 222, 195, 160, 228, 180, 2, 171, 165, 115, 38, 74, 209, 170, 134, 109, 81, 140, 26, 212, 194, 31, 142, 120, 80, 5, 9, 88, 7, 148, 148, 245, 97, 164, 176, 90, 52, 50, 167, 244, 226, 122, 124, 42, 155, 141, 148, 177, 216, 29, 39, 63, 28, 58, 162, 152, 79, 74, 80, 223, 171, 170, 164, 17, 222, 48, 232, 44, 250, 43, 57, 31, 229, 37, 242, 71, 162, 100, 221, 194, 112, 87, 127, 233, 109, 85, 216, 39, 2, 23, 11, 233, 225, 200, 73, 55, 213, 106, 75, 106, 164, 104, 183, 173, 228, 7, 90, 246, 71, 90, 246, 235, 108, 141, 110, 83, 42, 187, 164, 137, 87, 193, 42, 226, 32, 79, 61, 28, 220, 186, 113, 56, 25, 114, 29, 7, 159, 210, 5, 101, 250, 226, 223, 167, 33, 31, 125, 83, 89, 245, 12, 26, 198, 193, 19, 227, 62, 212, 140, 148, 202, 62, 26, 141, 232, 190, 210, 250, 112, 102, 180, 88, 182, 63, 143, 117, 225, 130, 193, 0, 210, 234, 194, 230, 173, 87, 113, 87, 95, 58, 201, 202, 69, 112, 155, 188, 199, 82, 191, 99, 77, 131, 227, 242, 65, 180, 99, 134, 50, 158, 2, 187, 19, 139, 194, 223, 123, 52, 223, 145, 76, 122, 154, 53, 157, 233, 18, 70, 164, 210, 173, 142, 195, 94, 178, 79, 6, 207, 164, 249, 243, 235, 36, 193, 56, 13, 183, 185, 174, 187, 64, 147, 114, 45, 23, 211, 232, 174, 85, 88, 161, 29, 226, 96, 240, 115, 248, 181, 217, 114, 217, 171, 143, 230, 157, 96, 86, 217, 252, 143, 49, 89, 152, 232, 145, 26, 28, 149, 70, 223, 103, 88, 122, 76, 88, 214, 9, 196, 209, 197, 20, 2, 224, 59, 226, 149, 4, 140, 144, 182, 124, 14, 177, 198, 38, 72, 133, 249, 206, 213, 87, 99, 110, 249, 11, 128, 49, 66, 141, 199, 87, 146, 8, 55, 122, 47, 120, 92, 6, 252, 22, 143, 5, 144, 99, 88, 167, 179, 38, 16, 80, 15, 245, 251, 109, 177, 147, 230, 47, 97, 99, 193, 254, 200, 94, 234, 5, 121, 75, 246, 207, 40, 242, 209, 191, 199, 94, 222, 150, 178, 217, 125, 27, 125, 118, 72, 156, 13, 202, 200, 155, 145, 45, 165, 152, 84, 145, 60, 49, 120, 82, 46, 104, 47, 64, 39, 28, 36, 59, 165, 83, 181, 80, 124, 136, 230, 166, 128, 82, 22, 77, 248, 174, 130, 91, 62, 251, 77, 56, 107, 54, 33, 172, 29, 95, 170, 21, 235, 61, 79, 43, 120, 209, 36, 117, 229, 65, 176, 28, 178, 173, 16, 234, 27, 43, 90, 127, 229, 212, 1, 44, 207, 235, 208, 111, 49, 9, 50, 28, 221, 208, 186, 66, 3, 235, 213, 38, 138, 13, 117, 253, 75, 48, 133, 189, 38, 55, 145, 242, 5, 43, 47, 23, 59, 34, 91, 141, 1, 181, 67, 220, 14, 147, 63, 225, 243, 205, 230, 47, 85, 51, 244, 216, 94, 4, 225, 159, 101, 19, 72, 250, 120, 63, 23, 177, 161, 163, 7, 224, 143, 72, 37, 213, 202, 153, 238, 183, 241, 164, 202, 88, 80, 97, 156, 210, 54, 87, 184, 55, 65, 188, 39, 237, 108, 73, 100, 206, 124, 141, 64, 79, 198, 6, 160, 13, 13, 31, 13, 197, 21, 41, 174, 193, 73, 240, 169, 22, 163, 68, 123, 73, 235, 208, 158, 211, 32, 56, 104, 129, 53 }),
                new BigInteger(new byte[] { 32, 58 }),
                new BigInteger(new byte[] { 136, 255, 42, 241, 119, 3, 220, 168, 247, 229, 241, 5, 120, 119, 90, 56, 117, 233, 6, 4, 227, 99, 61, 42, 114, 62, 78, 84, 215, 121, 20, 30, 104, 114, 153, 172, 227, 88, 246, 198, 113, 19, 235, 94, 231, 103, 186, 167, 225, 121, 57, 88, 96, 215, 135, 68, 252, 1, 126, 57, 180, 135, 209, 125, 208, 211, 156, 6, 222, 173, 84, 29, 243, 64, 147, 207, 120, 222, 67, 11, 131, 167, 114, 93, 63, 187, 189, 145, 234, 84, 175, 225, 218, 189, 17, 233, 66, 109, 142, 19, 202, 179, 200, 52, 36, 28, 101, 32, 68, 184, 204, 30, 189, 114, 181, 13, 21, 115, 62, 21, 21, 11, 28, 137, 253, 115, 66, 54, 47, 169, 141, 10, 80, 47, 64, 207, 222, 62, 56, 35, 85, 157, 76, 50, 136, 145, 35, 103, 7, 4, 212, 206, 47, 120, 254, 190, 151, 63, 54, 177, 217, 47, 241, 154, 43, 194, 205, 142, 49, 230, 46, 214, 59, 27, 191, 119, 190, 234, 0, 108, 79, 219, 46, 42, 213, 190, 219, 215, 49, 130, 55, 158, 8, 134, 73, 38, 172, 178, 6, 198, 196, 149, 53, 32, 213, 253, 147, 20, 185, 134, 0, 173, 63, 201, 98, 254, 0, 198, 196, 108, 231, 246, 93, 175, 174, 143, 206, 180, 209, 153, 203, 12, 227, 58, 168, 185, 165, 13, 85, 216, 43, 198, 29, 170, 130, 138, 95, 62, 36, 75, 37, 230, 237, 154, 223, 205, 56, 133, 114, 69, 47, 222, 66, 32, 187, 243, 202, 4, 33, 169, 88, 242, 113, 236, 65, 32, 216, 178, 45, 36, 47, 143, 143, 134, 115, 229, 30, 72, 91, 218, 129, 32, 155, 15, 169, 76, 132, 252, 239, 142, 191, 91, 28, 123, 243, 50, 117, 1, 89, 191, 244, 134, 88, 77, 21, 159, 79, 187, 172, 213, 212, 129, 168, 71, 40, 56, 87, 97, 66, 244, 155, 219, 194, 158, 100, 212, 115, 20, 147, 65, 112, 29, 239, 156, 229, 250, 199, 77, 249, 10, 253, 200, 79, 25, 185, 62, 178, 213, 83, 187, 218, 19, 190, 100, 35, 24, 195, 185, 233, 65, 44, 58, 40, 107, 101, 183, 146, 12, 97, 45, 112, 9, 104, 56, 247, 210, 140, 168, 228, 38, 34, 157, 193, 216, 102, 92, 94, 139, 120, 204, 55, 14, 100, 184, 222, 195, 160, 228, 180, 2, 171, 165, 115, 38, 74, 209, 170, 134, 109, 81, 140, 26, 212, 194, 31, 142, 120, 80, 5, 9, 88, 7, 148, 148, 245, 97, 164, 176, 90, 52, 50, 167, 244, 226, 122, 124, 42, 155, 141, 148, 177, 216, 29, 39, 63, 28, 58, 162, 152, 79, 74, 80, 223, 171, 170, 164, 17, 222, 48, 232, 44, 250, 43, 57, 31, 229, 37, 242, 71, 162, 100, 221, 194, 112, 87, 127, 233, 109, 85, 216, 39, 2, 23, 11, 233, 225, 200, 73, 55, 213, 106, 75, 106, 164, 104, 183, 173, 228, 7, 90, 246, 71, 90, 246, 235, 108, 141, 110, 83, 42, 187, 164, 137, 87, 193, 42, 226, 32, 79, 61, 28, 220, 186, 113, 56, 25, 114, 29, 7, 159, 210, 5, 101, 250, 226, 223, 167, 33, 31, 125, 83, 89, 245, 12, 26, 198, 193, 19, 227, 62, 212, 140, 148, 202, 62, 26, 141, 232, 190, 210, 250, 112, 102, 180, 88, 182, 63, 143, 117, 225, 130, 193, 0, 210, 234, 194, 230, 173, 87, 113, 87, 95, 58, 201, 202, 69, 112, 155, 188, 199, 82, 191, 99, 77, 131, 227, 242, 65, 180, 99, 134, 50, 158, 2, 187, 19, 139, 194, 223, 123, 52, 223, 145, 76, 122, 154, 53, 157, 233, 18, 70, 164, 210, 173, 142, 195, 94, 178, 79, 6, 207, 164, 249, 243, 235, 36, 193, 56, 13, 183, 185, 174, 187, 64, 147, 114, 45, 23, 211, 232, 174, 85, 88, 161, 29, 226, 96, 240, 115, 248, 181, 217, 114, 217, 171, 143, 230, 157, 96, 86, 217, 252, 143, 49, 89, 152, 232, 145, 26, 28, 149, 70, 223, 103, 88, 122, 76, 88, 214, 9, 196, 209, 197, 20, 2, 224, 59, 226, 149, 4, 140, 144, 182, 124, 14, 177, 198, 38, 72, 133, 249, 206, 213, 87, 99, 110, 249, 11, 128, 49, 66, 141, 199, 87, 146, 8, 55, 122, 47, 120, 92, 6, 252, 22, 143, 5, 144, 99, 88, 167, 179, 38, 16, 80, 15, 245, 251, 109, 177, 147, 230, 47, 97, 99, 193, 254, 200, 94, 234, 5, 121, 75, 246, 207, 40, 242, 209, 191, 199, 94, 222, 150, 178, 217, 125, 27, 125, 118, 72, 156, 13, 202, 200, 155, 145, 45, 165, 152, 84, 145, 60, 49, 120, 82, 46, 104, 47, 64, 39, 28, 36, 59, 165, 83, 181, 80, 124, 136, 230, 166, 128, 82, 22, 77, 248, 174, 130, 91, 62, 251, 77, 56, 107, 54, 33, 172, 29, 95, 170, 21, 235, 61, 79, 43, 120, 209, 36, 117, 229, 65, 176, 28, 178, 173, 16, 234, 27, 43, 90, 127, 229, 212, 1, 44, 207, 235, 208, 111, 49, 9, 50, 28, 221, 208, 186, 66, 3, 235, 213, 38, 138, 13, 117, 253, 75, 48, 133, 189, 38, 55, 145, 242, 5, 43, 47, 23, 59, 34, 91, 141, 1, 181, 67, 220, 14, 147, 63, 225, 243, 205, 230, 47, 85, 51, 244, 216, 94, 4, 225, 159, 101, 19, 72, 250, 120, 63, 23, 177, 161, 163, 7, 224, 143, 72, 37, 213, 202, 153, 238, 183, 241, 164, 202, 88, 80, 97, 156, 210, 54, 87, 184, 55, 65, 188, 39, 237, 108, 73, 100, 206, 124, 141, 64, 79, 198, 6, 160, 13, 13, 31, 13, 197, 21, 41, 174, 193, 73, 240, 169, 22, 163, 68, 123, 73, 235, 208, 158, 211, 32, 56, 104, 129, 53 })
            };

            // Minus Zero
            yield return new object[] { largePositiveBigInt1, BigInteger.Zero, largePositiveBigInt1 };
            yield return new object[] { largeNegativeBigInt1, BigInteger.Zero, largeNegativeBigInt1 };
            yield return new object[] { new BigInteger(123), BigInteger.Zero, new BigInteger(123) };
            yield return new object[] { new BigInteger(-123), BigInteger.Zero, new BigInteger(-123) };
            yield return new object[] { BigInteger.Zero, BigInteger.Zero, BigInteger.Zero };

            // Boundaries
            yield return new object[] { new BigInteger(Math.Pow(2, 33)), new BigInteger(Math.Pow(2, 34)), new BigInteger(-8589934592) };
            yield return new object[] { new BigInteger(Math.Pow(2, 32)), new BigInteger(Math.Pow(2, 34)), new BigInteger(-12884901888) };
            yield return new object[] { new BigInteger(Math.Pow(2, 31)), new BigInteger(Math.Pow(2, 32)), new BigInteger(-2147483648) };
            yield return new object[] { new BigInteger(Math.Pow(2, 32)), new BigInteger(Math.Pow(2, 32)), new BigInteger(0) };
            yield return new object[] { new BigInteger(Math.Pow(2, 31)), new BigInteger(Math.Pow(2, 33)), new BigInteger(-6442450944) };
            yield return new object[] { new BigInteger(Math.Pow(2, 33)), new BigInteger(Math.Pow(2, 32)), new BigInteger(4294967296) };

            yield return new object[] { new BigInteger(Math.Pow(2, 31)), new BigInteger(Math.Pow(2, 32) + Math.Pow(2, 33)), new BigInteger(-10737418240) };
            yield return new object[] { new BigInteger(Math.Pow(2, 33) + Math.Pow(2, 32) + Math.Pow(2, 31)), new BigInteger(Math.Pow(2, 34) + Math.Pow(2, 33) + Math.Pow(2, 31)), new BigInteger(-12884901888) };
        }

        [Theory]
        [MemberData(nameof(BinaryMinus_TestData))]
        public static void BinaryMinus(BigInteger bigInteger1, BigInteger bigInteger2, BigInteger expected)
        {
            Assert.Equal(expected, bigInteger1 - bigInteger2);
            Assert.Equal(expected, BigInteger.Subtract(bigInteger1, bigInteger2));

            Assert.Equal(-expected, bigInteger2 - bigInteger1);
            Assert.Equal(-expected, BigInteger.Subtract(bigInteger2, bigInteger1));
        }
    }
}
